2010-10-18 44 views
1

J'essaie d'accéder au fichier "J: \ Java \ NetBeansProjects \ Liste des éléments oubliés \ list.eml" et de l'ouvrir en utilisant l'application par défaut définie par le système d'exploitation. Cela peut être acomplished dans l'invite de commande en appelantOuverture d'un fichier externe, Java avec Java

cd "J:\Java\NetBeansProjects\List of forgoten things" 
"list.eml" 

donc je décidé d'utiliser

Runtime.getRuntime().exec("cd \"" + System.getProperty("user.dir") + "\"\n\r" + "\"" + selectedFile.getName() + "\""); 

mais il continue à me donner une IOException:

java.io.IOException: Cannot run program "cd": CreateProcess error=2, The system cannot find the file specified 

ce que quelqu'un a une expérience ou des conseils qu'ils aimeraient partager?

Répondre

4

cd n'est pas un exécutable réel - il s'agit d'une commande intégrée au shell.

En outre, je pense que ce que vous voulez faire est d'utiliser Desktop en Java 6, en particulier le open method, qui tente d'ouvrir un fichier avec l'application enregistrée par défaut sur la plate-forme (si elle existe).

http://download.oracle.com/javase/6/docs/api/java/awt/Desktop.html

+0

mais il a exécuté la commande "shutdown", pour moi ... Comment puis-je exécuter des commandes shell, alors? – Supuhstar

+0

'shutdown' est une commande réelle dans Windows, située dans'% WINDIR%/system32'. S'il vous plaît voir mon édition pour une solution possible à votre problème. – birryree

+1

Merci! "java.awt.Desktop.getDesktop(). open (fichier sélectionné);" a fait l'affaire! – Supuhstar

2

Cela se produit parce que exec tente d'exécuter la commande cd comme un vrai fichier alors qu'il est seulement une commande de shell (cmd.exe).

Vous pouvez essayer en appelant cmd /C "cd whateverdir " pour passer la commande à shell exe ou en utilisant un fichier .bat.

0

Vous n'avez pas besoin de CD dans le répertoire avant d'exécuter le fichier. Il suffit de fournir le chemin complet.

String fileName=System.getProperty("user.dir") + selectedFile.getName(); 
Runtime.getRuntime().exec(fileName);