Changer le dossier courant utilisé par le shell sous linux
Bonjour,
Je cherche à exécuter des commandes shell sous linux, à partir d'un programme java.
J'ai pu le faire grâce au code suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
try {
Process process = Runtime.getRuntime().exec(command);
InputStream inputstream = process.getInputStream();
InputStreamReader inputstreamreader = new InputStreamReader(inputstream);
BufferedReader bufferedreader = new BufferedReader(inputstreamreader);
String line;
String output = "";
while ((line = bufferedreader.readLine()) != null) {
output = output + "\n" + line;
}
terminal terminalWindow = new terminal(output);
terminalWindow.setVisible(true);
} catch (IOException ex) {
Logger.getLogger(mainWindow.class.getName()).log(Level.SEVERE, null, ex);
errorMessage errorMessageWindow = new errorMessage(this, true, ex.toString());
errorMessageWindow.setVisible(true);
} |
Le problème est que si j'execute un programme à partir du shell, qui enregistre un fichier dans le répertoire courant, il est sauvegardé dans le home si j'ai lancé le par l'interface graphique; et dans le répertoire du .jar si je l'ai lancé depuis un terminal.
Je voudrais laisser le choix à l'utilisateur de l'emplacement pour enregistrer ce fichier, et il faudrait donc que je puisse changer le répertoire courant utilisé par le shell.
J'ai essayé les deux méthodes suivantes :
Code:
1 2 3
|
try {
Process process = Runtime.getRuntime().exec("cd /chemin/fichier;" + command); |
Code:
1 2 3 4 5 6 7 8
| File f = new File("/home/sylvain/Desktop/test");
if (!(f.exists())){
if (!(f.mkdir()))
System.err.println("Cannot create the new folder!");
}
//Change current folder
System.setProperty("user.dir", "/chemin/fichier"); |
Dans le premier cas, j'ai une exception :
Citation:
java.io.IOException: Cannot run program "cd": java.io.IOException: error=2, No such file or directory
Il semble qu'il ne comprend pas la commande cd.
Dans le deuxième cas, le dossier est bien créé si il n'existe pas, et System.getProperty("user.dir") renvoie bien la valeur que j'ai donné en paramètre, mais le fichier créé est toujours au même endroit, que le programme ait été lancé par un terminal ou par l'interface graphique.
Merci d'avance pour votre aide.