Как открыть файл блокнота в Java? - PullRequest
7 голосов
/ 15 августа 2010

Я хочу открыть Блокнот в моей Java-программе.Предположим, что у меня есть одна кнопка, если я нажму эту кнопку, появится блокнот.У меня уже есть имя файла и каталог.

Как я могу реализовать этот случай?

Ответы [ 7 ]

21 голосов
/ 15 августа 2010

Попробуйте

if (Desktop.isDesktopSupported()) {
    Desktop.getDesktop().edit(file);
} else {
    // dunno, up to you to handle this
}

Убедитесь, что файл существует.Спасибо Andreas_D, который указал на это.

10 голосов
/ 02 марта 2012

(при условии, что вы хотите, чтобы блокнот открыл "myfile.txt":)

ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "myfile.txt");
pb.start();
5 голосов
/ 15 августа 2010

Предполагая, что вы хотите запустить программу Windows notepad.exe, вы ищете функцию exec.Вы, вероятно, хотите вызвать что-то вроде:

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("C:\\path\\to\\notepad.exe C:\\path\\to\\file.txt");

Например, на моей машине блокнот находится по адресу C:\Windows\notepad.exe:

Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("C:\\Windows\\notepad.exe C:\\test.txt");

Откроется блокнот с файлом test.txtоткрыть для редактирования.

Обратите внимание, что вы также можете указать третий параметр для exec, который является рабочим каталогом, из которого выполняется, - следовательно, вы можете запустить текстовый файл, который хранится относительно рабочего каталога вашей программы..

2 голосов
/ 13 мая 2012
String fileName = "C:\\Users\\Riyasam\\Documents\\NetBeansProjects\\Student Project\\src\\studentproject\\resources\\RealWorld.chm";
        String[] commands = {"cmd", "/c", fileName};
        try {
            Runtime.getRuntime().exec(commands);
//Runtime.getRuntime().exec("C:\\Users\\Riyasam\\Documents\\NetBeansProjects\\SwingTest\\src\\Test\\RealWorld.chm");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
2 голосов
/ 16 ноября 2011

В IDE (Eclipse) компоновка "C: \ path \ to \ notepad.exe C: \ path \ to \ file.txt".Поэтому я использовал следующее, что помогает мне и моей IDE быть счастливыми: o) Надеюсь, это поможет другим.

String fpath;
fPath =System.getProperty("java.io.tmpdir")+"filename1" +getDateTime()+".txt";
//SA - Below launches the generated file, via explorer then delete the file "fPath"
       try { 
        Runtime runtime = Runtime.getRuntime();         
        Process process = runtime.exec("explorer " + fPath);

Thread.sleep(500); //lets give the OS some time to open the file before deleting

    boolean success = (new File(fPath)).delete();
    if (!success) {
        System.out.println("failed to delete file :"+fPath);
        // Deletion failed
    }

} catch (InterruptedException e) {
    // TODO Auto-generated catch block
    e.printStackTrace(); 
}
2 голосов
/ 15 августа 2010

Используя SWT , вы можете запустить любой. Если вы хотите эмулировать двойной щелчок по тексту в окнах, это невозможно только с простой JRE.Вы можете использовать собственную библиотеку, такую ​​как SWT, и использовать следующий код для открытия файла:

    org.eclipse.swt.program.Program.launch("c:\path\to\file.txt")

Если вы не хотите использовать стороннюю библиотеку, вы должны знать и знать, где находится блокнот.exe есть (или он виден в PATH):

    runtime.exec("notepad.exe c:\path\to\file.txt");

Apache common-exec - хорошая библиотека для обработки выполнения внешнего процесса.

ОБНОВЛЕНИЕ: более полноеОтвет на ваш вопрос можно найти здесь

0 голосов
/ 25 июля 2014

Лучше всего это сделать, если запустить блокнот в командной строке командой: start notepad

String[] startNotePadWithoutAdminPermissions = new String[] {"CMD.EXE", "/C", "start" "notepad" };

Сохранить массив строковых команд и задать его как параметр в exec

Process runtimeProcess = Runtime.getRuntime().exec(startNotepadAdmin2);
runtimeProcess.waitFor();
...