如何在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中打开记事本文件?的主要内容,如果未能解决你的问题,请参考以下文章