7

我想在我的 Java 程序中打开记事本。假设我有一个按钮,如果我单击此按钮,就会出现记事本。我已经有一个文件名和一个目录。

我该如何实施这种情况?

4

7 回答 7

21

尝试

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

确保文件存在。感谢 Andreas_D 指出了这一点。

于 2010-08-15T11:49:52.583 回答
10

(假设您希望记事本打开“myfile.txt”:)

ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "myfile.txt");
pb.start();
于 2012-03-01T20:30:25.700 回答
5

假设您希望启动 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从其执行工作目录 - 因此,您可以启动相对于程序工作目录存储的文本文件。

于 2010-08-15T11:30:58.583 回答
2

在 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(); 
}
于 2011-11-16T09:35:22.930 回答
2

使用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是一个很好的处理外部进程执行的库。

更新:您的问题的更完整答案可以在这里找到

于 2010-08-15T11:33:44.113 回答
2
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();
        }
于 2012-05-13T03:33:34.793 回答
0

如果您在命令行中使用以下命令启动记事本,您可以做到这一点:启动记事本

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

保存字符串命令数组并在 exec 中提供参数

Process runtimeProcess = Runtime.getRuntime().exec(startNotepadAdmin2);
runtimeProcess.waitFor();
于 2014-07-25T08:02:53.787 回答