Я хочу открыть Блокнот в своей программе на Java. Предположим, что у меня есть одна кнопка, если я нажму на эту кнопку, появится блокнот. У меня уже есть имя файла и каталог.Как открыть файл блокнота в java?
Как я могу реализовать этот случай?
Я хочу открыть Блокнот в своей программе на Java. Предположим, что у меня есть одна кнопка, если я нажму на эту кнопку, появится блокнот. У меня уже есть имя файла и каталог.Как открыть файл блокнота в java?
Как я могу реализовать этот случай?
Предполагая, что вы хотите запустить программу 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")
Если вы не хотите использовать сторонний LIB, вы должны знать, и вы знаете, где notepad.exe является (или это видно в PATH):
runtime.exec("notepad.exe c:\path\to\file.txt");
Apache common-exec хорошая библиотека для обработки внешнего исполнения процесса.
UPDATE: Более полный ответ на ваш вопрос может быть найден here
Попробуйте
if (Desktop.isDesktopSupported()) {
Desktop.getDesktop().edit(file);
} else {
// dunno, up to you to handle this
}
Убедитесь, что файл существует. Спасибо Андреасу, который указал на это.
Возможно, вы захотите добавить подробную информацию о требуемой версии Java для этого. –
Эй, не знал этого. круто. Но - вторая строка должна читать «Desktop.getDesktop(). Edit (file);'. И файл должен быть создан, иначе он будет жаловаться на 'IllegalArgumentException'. –
Спасибо @ Andreas, исправил его. Убедитесь, что файл существует, является частью задания guilgamos :) Хорошо поймать в любом случае, +1 – whiskeysierra
В 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();
}
(если вы хотите, чтобы открыть блокнот «myfile.txt» :)
ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "myfile.txt");
pb.start();
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();
}
Вы могли бы сделать это лучше, если вы начнете блокнот в командной строке с помощью команды: запуск блокнота
String[] startNotePadWithoutAdminPermissions = new String[] {"CMD.EXE", "/C", "start" "notepad" };
Сохранить массив строковых команд и дать ему как Parametr в Exec
Process runtimeProcess = Runtime.getRuntime().exec(startNotepadAdmin2);
runtimeProcess.waitFor();
Что именно вы подразумеваете под «записной книжкой»? Программа дерьмового редактирования текста, используемая в Windows, или элемент управления TextArea?Простите меня за то, что я принимаю «вещи», но похоже, что вы не знаете основ Swing/AWT. – aviraldg
... вы хотите открыть программу блокнота или текстовый файл, который вы создали в блокноте? – Stephen