我正在编写跨平台的基于Swing的应用程序,其中我想利用已注册到OS的文件关联。在Java应用程序中使用文件关联
因此,我已经到了可以点击文件并加载我的应用程序的程度,但我需要知道的是如何让我的应用程序知道启动它的文件的位置,然后查询内容。
有没有更进一步的文件关联注册?或者Java可以为我做这件事吗?
我正在编写跨平台的基于Swing的应用程序,其中我想利用已注册到OS的文件关联。在Java应用程序中使用文件关联
因此,我已经到了可以点击文件并加载我的应用程序的程度,但我需要知道的是如何让我的应用程序知道启动它的文件的位置,然后查询内容。
有没有更进一步的文件关联注册?或者Java可以为我做这件事吗?
我并不积极,但我期望通过文件点击处理的文件的名称将最终在您的main()
方法的参数中结束。你有没有试过/检查过?
执行此操作的一种方法是让文件关联通过脚本或批处理文件运行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(没有指定):无论你指定在其中注册的文件类型的应用程序路径
在注册表中添加到"%1"
。这是一个特殊的参数,Windows将填入被点击文件的路径。因此,您的注册表项看起来像c:\path\to\app.exe "%1"
没有它的跨平台。 – Dan 2010-01-11 20:09:43
Windows上有两个命令可以帮助assoc和ftype,因此您无需执行脏衣服操作注册表。使用例如java.lang.Process调用这些命令。 http://www.rgagnon.com/javadetails/java-0592.html
你打算只在Windows上使用它吗? – stacker 2010-01-11 16:54:24
否 - 跨平台,iv修复了这个问题 – Dan 2010-01-11 20:08:14
你在Linux和OSX上做过吗? – KrzyH 2013-07-15 13:32:51