Problème du package java.io.file: Accès refusé
Résolu
OmeGaFire_
Messages postés
99
Statut
Membre
-
OmeGaFire_ Messages postés 99 Statut Membre -
OmeGaFire_ Messages postés 99 Statut Membre -
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:
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_.
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_.
A voir également:
- Java.io.filenotfoundexception
- Microsoft visual c++ 2019 redistributable package - Guide
- Atk package c'est quoi ✓ - Forum Windows
- ATK Package - Forum Pilotes (drivers)
- Getting package info failed en français - Forum Huawei
- L'application n'a pas été installée car le package est en conflit avec un package déjà présent - Forum Samsung
1 réponse
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
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
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 ?
Je pense qu'il n'aime pas le car donc c'est C:\
mkdir de C:\ à mon avis ce n'est pas bon...