双击一个用java编写的程序打开一个文件

时间:2013-04-23 07:48:39

标签: java

我想知道是否可以通过双击文件在我的程序中打开一个用java编写的文件?

例如: 在我的桌面上是一个由我的程序构建的文件“test.dat”。如果我尝试打开此文件,我的程序会显示并询问我要对该文件执行的操作。

是否可以使用java实现该功能?

3 个答案:

答案 0 :(得分:4)

操作系统决定哪些应用程序与给定的扩展名相关联。您可以将操作系统配置为使用您的程序打开所有 .dat文件(如果适用于您)。或者,创建一个快捷方式或启动器,告诉您要使用的内容。

答案 1 :(得分:2)

我明白你在问什么。您想知道如何将参数从OS传递到您的应用程序,然后调用您的打开文件方法。

你的java程序有一个类,它有一个main方法,可以调用它来启动你的应用程序。此类在清单文件中列为Main-Class:com.your.package.MainClass。方法签名类似于:

public static void main(final String args[]) {

String数组args []包含从命令行传递给程序的所有参数。当您告诉操作系统将文件与可执行文件关联,然后双击该文件时,操作系统会将文件名(完整路径)作为此String数组中的第一个参数传递给可执行文件。棘手的部分是你不能只是将文件扩展名与jar文件关联,因为jar文件不是可执行文件。 jar文件实际上与java.exe或javaw.exe相关联。因此,为了完成这项工作,您需要创建一个调用java.exe或javaw.exe的批处理文件(或根据您的操作系统的shell脚本),设置jar文件的类路径,运行主类,然后传递参数到你的程序。这是在Windows上的批处理文件中完成的方式。

"C:\Program Files\Java\jre1.8.0_25\bin\javaw.exe" -cp C:\Path\To\Your\Jar\File.jar com.your.package.MainClass %1

然后,您不会将.dat文件与jar文件相关联,而是将其与此批处理文件关联。 %1将导致文件名作为args [0]传递给您的MainClass,然后您可以将其传递给openFile(arg [0])方法,然后文件打开。您不仅限于%1。如果操作系统将多个文件传递给您的程序,则可以使用%1%2%3等,例如,如果您选择了多个.dat文件。这将在Unix shell脚本中以类似的方式完成。

/usr/bin/javac -cp /Path/To/Your/Jar/File.jar com.your.package.MainClass %1

答案 2 :(得分:0)

通过双击“打开”文件是Windows操作系统的一项功能,可通过将文件扩展名映射到特定程序来控制。

如果要运行在jar文件中打包的java程序,则必须创建所谓的“runnable”jar并将jar扩展名映射到名为javajavaw的程序。