我想制作一个Java程序,该程序可以使用Windows的"Open With…"菜单选项在文件上执行,以读取文件并处理它们。我该如何做到这一点?
"Open with…"以包含绝对文件路径的字符串作为第一个参数,有效地执行程序。也就是说,如果我右键单击C:\Docs中的"text.txt",并选择用记事本打开它,这将与在windows命令提示符中键入以下内容完全相同:
notepad.exe "C:Docstext.txt"
不幸的是,由于java程序是通过java执行的,而java本身需要额外的参数,并且在使用Open With选项时缺乏控制这些参数的能力,因此无法使用java程序直接打开文件。
您最好的方法是使用包装器脚本或程序为您打开带有文件的jar。我使用以下一行Windows批处理脚本作为示例:
FancyTextProcessorLauncher.bat:
java -jar "user3838812sFancyTextProcessor.jar" %1
将此脚本放在与user3838812sFancyTextProcessor.jar(在本例中表示打包程序)相同的目录中。
使用Open With,选择FancyTextProcessorLauncher.bat作为打开文本文件的程序。此脚本使用适当的参数启动Java以运行包含程序的jar,并将%1(在批处理脚本领域,通过命令行传递的第一个参数)作为第一个参数提供给程序。然后,您可以从传入的路径创建一个File对象(或任何适合您想要做的事情)(可以从Main方法中以args[0]的形式访问)。