Открытие внешнего файла, не являющегося Java, с помощью Java - PullRequest
1 голос
/ 18 октября 2010

Я пытаюсь получить доступ к файлу "J: \ Java \ NetBeansProjects \ List of забытые вещи \ list.eml" и открыть его с помощью приложения по умолчанию, определенного операционной системой. Это может быть выполнено в командной строке путем вызова

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

поэтому я решил использовать

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

но он продолжает давать мне IOException:

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

Есть ли у кого-нибудь какой-либо опыт или совет, которым они хотели бы поделиться?

Ответы [ 3 ]

4 голосов
/ 18 октября 2010

cd не настоящий исполняемый файл - это встроенная команда оболочки.

Кроме того, я думаю, что вы хотите использовать Desktop в Java 6, в частности, open метод , который пытается открыть файл с зарегистрированным приложением по умолчанию на платформе (если он существует).

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

2 голосов
/ 18 октября 2010

Это происходит потому, что exec пытается выполнить команду cd как настоящий файл, в то время как это всего лишь команда оболочки (cmd.exe).

Вы можете попробовать, вызвав cmd /C "cd whateverdir " передать команду в shell exe или используя файл .bat.

0 голосов
/ 18 октября 2010

Вам не нужно CD к каталогу перед выполнением файла.Просто укажите полный путь.

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