Я хочу открыть Блокнот в своей программе Java. Предположим, что у меня есть одна кнопка, если я нажму на эту кнопку, появится блокнот. У меня уже есть имя файла и каталог.
Как я могу реализовать этот случай?
Я хочу открыть Блокнот в своей программе Java. Предположим, что у меня есть одна кнопка, если я нажму на эту кнопку, появится блокнот. У меня уже есть имя файла и каталог.
Как я могу реализовать этот случай?
Пытаться
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().edit(file);
} else {
// I don't know, up to you to handle this
}
Убедитесь, что файл существует. Благодаря Andreas_D, который указал на это.
Desktop.getDesktop().edit(file);
. И файл должен быть создан, иначе он будет жаловаться на IllegalArgumentException
.
- person Andreas Dolk; 15.08.2010
(при условии, что вы хотите, чтобы блокнот открывал «myfile.txt» :)
ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "myfile.txt");
pb.start();
Предполагая, что вы хотите запустить программу 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
, который является рабочим каталогом для выполнения, поэтому вы можете запустить текстовый файл, который хранится относительно рабочего каталога вашей программы.
Используя 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 — хорошая библиотека для обработки выполнения внешних процессов.
ОБНОВЛЕНИЕ. Более полный ответ на ваш вопрос можно найти здесь
В 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();
}
Вы можете сделать это лучше всего, если запустите блокнот в командной строке с помощью команды: start notepad
String[] startNotePadWithoutAdminPermissions = new String[] {"CMD.EXE", "/C", "start" "notepad" };
Сохраните массив строковых команд и задайте его как параметр в exec
Process runtimeProcess = Runtime.getRuntime().exec(startNotepadAdmin2);
runtimeProcess.waitFor();
notepad
? Дрянная программа для редактирования текста, используемая в Windows, или элемент управления TextArea? Простите меня за предположения, но похоже, что вы не знаете основ Swing/AWT. - person aviraldg   schedule 15.08.2010