我正在编写一个跨平台的基于 Swing 的应用程序,我想在其中使用已在操作系统中注册的文件关联。
所以我已经到了可以单击文件并加载我的应用程序的地步,但我需要知道的是如何让我的应用程序知道启动它的文件在哪里,然后查询内容。
我与文件关联注册还有什么关系吗?或者Java可以为我做这件事吗?
我正在编写一个跨平台的基于 Swing 的应用程序,我想在其中使用已在操作系统中注册的文件关联。
所以我已经到了可以单击文件并加载我的应用程序的地步,但我需要知道的是如何让我的应用程序知道启动它的文件在哪里,然后查询内容。
我与文件关联注册还有什么关系吗?或者Java可以为我做这件事吗?
我不肯定,但我希望您通过文件单击处理的文件的名称最终会出现在您的main()
方法的参数中。你试过/检查过吗?
如果这是在 Windows 上(您没有指定):
在注册表中,无论您为注册到它的文件类型指定应用程序路径,添加到"%1"
. 这是一个特殊的参数,Windows 将填写被点击文件的路径。所以你的注册表项看起来像c:\path\to\app.exe "%1"
一种方法是让文件关联通过脚本或批处理文件运行您的 Java 应用程序,并让批处理文件将文件的路径名作为命令行参数、环境变量或 Java 属性传递。
扩展可以链接到应用程序,您可以在安装过程中设置注册表项。您需要的密钥在此处记录:
http://support.microsoft.com/?scid=kb%3Ben-us%3B185453&x=6&y=11
从java你不能直接访问windows注册表。使用运行时你可以做类似的事情 http://www.rgagnon.com/javadetails/java-0480.html
Windows 上有两个命令可以提供帮助,即 assoc 和 ftype,这样您就不必为了操作注册表而做脏活。使用例如 java.lang.Process 调用命令。http://www.rgagnon.com/javadetails/java-0592.html