Problème du package java.io.file: Accès refusé

Résolu/Fermé
OmeGaFire_ Messages postés 83 Date d'inscription dimanche 19 juin 2016 Statut Membre Dernière intervention 19 janvier 2018 - 28 mars 2017 à 17:22
OmeGaFire_ Messages postés 83 Date d'inscription dimanche 19 juin 2016 Statut Membre Dernière intervention 19 janvier 2018 - 30 mars 2017 à 18:46
Bonjour,
Je développe une sorte de console de commandes en Java, mais je me heurte à un problème.
Je voudrais que, à l'aide d'une commande, on puisse lancer une commande de cmd.exe directement via mon appli. J'écris donc cette commande dans un fichier .bat, ainsi que PAUSE en 2e ligne (pour pouvoir lire le résultat), mais je n'y arrive pas, car une exception se produit.
Voici le code:


package fr.killuaah.cmdclasses;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Timer;

public class cmdExe {

public static void cmdexe(String args) throws IOException{

File f = new File("C:/Dankmoka");
f.getParentFile().mkdirs();
if (!f.exists()) {
try {
f.createNewFile();
}
catch (Exception e) {
System.out.println(">>Error while creating the command file !");
}
}

try {
File tempbat = new File("C:/Dankmoka/tempcmd.bat");
if (!tempbat.exists()) {
tempbat.createNewFile();
}
FileWriter fw = new FileWriter(f);
BufferedWriter bw = new BufferedWriter(fw);
String[] argst = args.split("cmd ");
bw.write(argst[1]);
bw.newLine();
bw.write("PAUSE");
bw.close();
fw.close();
Runtime r = Runtime.getRuntime();
String[] command = {"cmd", "/c", "start Dank/tempcmd.bat"};
r.exec(command);
}
catch (Exception e) {

System.out.println(">>Error while launching this command (" + e.getMessage().toString() + ")");

}


}



}





Et l'exception en question est: https://prnt.sc/epim6f

Je ne sais plus quoi faire, je n'ai plus d'idée.
En espérant une réponse au plus vite.
Bonne journée, OmeGaFire_.

1 réponse

KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
28 mars 2017 à 19:10
Bonjour,

Il ne faut pas masquer les exceptions, elles contiennent des informations importantes pour la résolution des erreurs, notamment les lignes de code correspondant à l'erreur.

Ainsi, quand tu fais un catch (Exception e) il faudrait ensuite faire un e.printStackTrace(); afin d'avoir le détail de l'erreur plutôt qu'un System.out.println() qui ne contient que le message.

Quant à l'erreur "Accès refusé" elle est relativement explicite, tu n'as pas les droits pour accéder au répertoire C:\Dankmoka
0
OmeGaFire_ Messages postés 83 Date d'inscription dimanche 19 juin 2016 Statut Membre Dernière intervention 19 janvier 2018
29 mars 2017 à 16:19
Bonjour,

En effet, je sais qu'il ne faut pas masquer l'exception, je ne sais pas pourquoi j'ai fais ça.
Quand à l'accès qui est refusé, comment donner le droit à l'application d'accéder à ce répertoire ?
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
29 mars 2017 à 18:44
Normalement les droits sont les mêmes que ceux de l'utilisateur. Si tu le fais à la main est ce que tu peux créer un fichier dans ce dossier ? En général C:\ est restreint et seul un administrateur de la machine peut y faire des écritures.
0
OmeGaFire_ Messages postés 83 Date d'inscription dimanche 19 juin 2016 Statut Membre Dernière intervention 19 janvier 2018 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
29 mars 2017 à 18:46
Je suis l'administrateur de la machine, c'est mon pc personnel :/
0
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 3 015
29 mars 2017 à 19:05
Et la printStackTrace donne l'erreur à quel endroit exactement ?

Je pense qu'il n'aime pas le
f.getParentFile().mkdirs();
car
f = new File("C:/Dankmoka");
donc
f.getParentFile()
c'est C:\

mkdir de C:\ à mon avis ce n'est pas bon...
0
OmeGaFire_ Messages postés 83 Date d'inscription dimanche 19 juin 2016 Statut Membre Dernière intervention 19 janvier 2018 > KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024
30 mars 2017 à 18:46
En fait c'est bon, c'est réglé, je n'avais pas l'administrateur "complet" du C:
0