如何在java中打开记事本文件?

Posted

技术标签:

【中文标题】如何在java中打开记事本文件?【英文标题】:How to open the notepad file in java? 【发布时间】:2010-08-15 11:22:49 【问题描述】:

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

我该如何实现这个案例?

【问题讨论】:

notepad 到底是什么意思? Windows 上使用的蹩脚的文本编辑程序,还是 TextArea 控件?请原谅我假设“事物”,但听起来您不了解 Swing/AWT 的基础知识。 ...您要打开记事本程序,还是您在记事本中创建的文本文件? 【参考方案1】:

试试

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

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

【讨论】:

您可能需要添加有关所需 Java 版本的详细信息以使其正常工作。 嘿,不知道。凉爽的。但是 - 第二行必须阅读Desktop.getDesktop().edit(file);。并且必须创建文件,否则它会抱怨IllegalArgumentException 感谢@Andreas,已修复。确保文件存在是 guilgamos 工作的一部分 :) 还是不错的,+1【参考方案2】:

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

ProcessBuilder pb = new ProcessBuilder("Notepad.exe", "myfile.txt");
pb.start();

【讨论】:

【参考方案3】:

假设您希望启动 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 指定第三个参数,这是要从其执行的工作目录 - 因此,您可以启动一个相对于程序工作目录存储的文本文件。

【讨论】:

【参考方案4】:

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

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

【讨论】:

【参考方案5】:

在 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(); 

【讨论】:

【参考方案6】:
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();
        

【讨论】:

【参考方案7】:

如果你在命令行中使用命令启动记事本,你可以做到最好:启动记事本

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

保存字符串命令数组并在 exec 中像参数一样给出它

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

【讨论】:

以上是关于如何在java中打开记事本文件?的主要内容,如果未能解决你的问题,请参考以下文章

如何用浏览器打开用记事本编写的代码

电脑怎么用记事本写Java程序并运行?

*.json文件如何打开

java 记事本 - 实例

怎么打开java文件

如何用命令打开记事本