获取我刚刚单击以使用 java 应用程序(jar 可执行文件)打开的文件的路径 [重复]
Posted
技术标签:
【中文标题】获取我刚刚单击以使用 java 应用程序(jar 可执行文件)打开的文件的路径 [重复]【英文标题】:Fetch the path of the file I just clicked to open with a java application (jar executable) [duplicate] 【发布时间】:2012-12-19 00:52:12 【问题描述】:我有一个什么都不做的简单程序:
class ShowTheNameOfTheFile
static public void main(String[] argv)
我将它编译为 ShowTheNameOfTheFile.jar 并配置我的 Windows 机器以使用它打开所有 txt 文件。
现在,当我单击一个 txt 文件时,它将打开我的 ShowTheNameOfTheFile.jar 程序。
在java中,我怎么知道用txt文件打开了ShowTheNameOfTheFile应用程序?
【问题讨论】:
@NikolayKuznetsov 谢谢。是不是更清楚了? @NikolayKuznetsov 现在呢? 是的,现在我明白你的意思了。 @NikolayKuznetsov 非常感谢您的帮助 文件名不是作为参数交给java程序的吗(argv
)?
【参考方案1】:
您可以参考 Joop Eggen 的代码。
问题是,如果它是唯一的代码,并且您将这个 jar 分配给 Windows Open,它可能会默默地死掉,而不会将任何输出打印到任何控制台,因为它不是从控制台启动的。
首先,从控制台尝试
java -jar ShowTheNameOfTheFile.jar 1 2 3
如果数字被打印出来,那么它可以正常工作。
然后添加类似这样的东西
Process Builder pb = new ProcessBuilder("cmd", "/c", "start", "echo", args[0]);
pb.start();
到您的代码,然后双击一个文件。
【讨论】:
【参考方案2】:命令行参数应该给出文件路径。
class ShowTheNameOfTheFile
static public void main(String[] argv)
System.out.println(Arrays.toString(argv));
【讨论】:
"windows下,需要在注册表中附加一些细节"。这就是它不起作用的原因。以上是关于获取我刚刚单击以使用 java 应用程序(jar 可执行文件)打开的文件的路径 [重复]的主要内容,如果未能解决你的问题,请参考以下文章