3
String cmds[] = new String[] { "cmd", "/c","C:\Test.txt" };
Runtime.getRuntime().exec(cmds);

目前,我使用上面的代码在本地打开一个txt文件。但是,它会被记事本打开,不会保持原来的格式。我想用记事本++打开默认来解决这个问题。请告诉我处理此案的方法。谢谢。

4

5 回答 5

3

您可以使用Desktop.getDesktop().open(file)它需要默认的系统应用程序来打开指定的文件。

这个 API 的优点是它的平台独立性。

但是,如果出现以下情况,您确实需要彻底考虑您将要做什么:

  • .txt已安装记事本++,但不是文件的默认程序
  • Notepad++ 存在,但未安装

  • 来自WVrock的附加信息

    我想指出的是,可以使用edit()而不是open()来用系统默认的编辑应用程序打开它而不是打开应用程序。请注意,普通用户不知道如何更改默认编辑应用程序,通常在 Windows 中将其设置为记事本。

    于 2013-08-09T10:14:40.807 回答
    2

    尝试这个:

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

    或者

    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec("C:\\path\\to\\notepad++.exe C:\\path\\to\\file.txt");
    

    例如,如果 notepad++ 位于C:\Windows\notepad++.exe

    Runtime runtime = Runtime.getRuntime();
    Process process = runtime.exec("C:\\Windows\\notepad++.exe C:\\test.txt");
    

    转到您的记事本++ 属性并查看路径

    于 2013-08-09T11:43:43.280 回答
    1
                try {
                    String cmds[] = new String[] { "cmd", "/c","C:\\Program Files (x86)\\Notepad++\\notepad++.exe " , "C:\\Test.txt" };
                    Runtime.getRuntime().exec(cmds);
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
    
    于 2018-08-08T11:03:53.503 回答
    0

    右键单击该txt文件并转到属性并将打开更改为notepad++。现在运行您的代码,您现在可以看到该文件在 notepad++ 中打开。

    第一种情况是您的计算机notepad用作默认文本编辑器,通过执行上述步骤,它将更改为notepad++

    于 2013-08-09T10:13:58.910 回答
    0
    { "cmd", "/c","notepad++ C:\Test.txt" };
    

    应该可以工作,但是如果您没有在 PATH 中添加记事本++,则该命令将是

    { "cmd", "/c","fullpath-to-notepad++.exe C:\Test.txt" };
    
    于 2013-08-09T10:22:21.300 回答