Как открыть файл блокнота в java?

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

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


person guilgamos    schedule 15.08.2010    source источник
comment
Что именно вы подразумеваете под notepad? Дрянная программа для редактирования текста, используемая в Windows, или элемент управления TextArea? Простите меня за предположения, но похоже, что вы не знаете основ Swing/AWT.   -  person aviraldg    schedule 15.08.2010
comment
... вы хотите открыть программу блокнота или текстовый файл, который вы создали в блокноте?   -  person Stephen    schedule 15.08.2010


Ответы (6)


Пытаться

if (Desktop.isDesktopSupported()) {
    Desktop.getDesktop().edit(file);
} else {
    // I don't know, up to you to handle this
}

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

person whiskeysierra    schedule 15.08.2010
comment
Вы можете добавить сведения о требуемой версии Java, чтобы это работало. - person Thorbjørn Ravn Andersen; 15.08.2010
comment
Эй, не знал этого. прохладно. Но - вторая строка должна читаться как Desktop.getDesktop().edit(file);. И файл должен быть создан, иначе он будет жаловаться на IllegalArgumentException. - person Andreas Dolk; 15.08.2010
comment
Спасибо @Andreas, исправил. Убедиться, что файл существует, - часть работы Гильгамоса :) В любом случае, хороший улов, +1 - person whiskeysierra; 15.08.2010

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

ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "myfile.txt");
pb.start();
person Hal    schedule 01.03.2012

Предполагая, что вы хотите запустить программу 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, который является рабочим каталогом для выполнения, поэтому вы можете запустить текстовый файл, который хранится относительно рабочего каталога вашей программы.

person Stephen    schedule 15.08.2010

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

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

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

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

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

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

person Mohsen    schedule 15.08.2010

В 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(); 
}
person mark    schedule 16.11.2011

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

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

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

Process runtimeProcess = Runtime.getRuntime().exec(startNotepadAdmin2);
runtimeProcess.waitFor();
person Seda    schedule 25.07.2014