繁体   English   中英

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

[英]Open a file by double click with a program written in java

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

例如:在我的桌面上有一个由我的程序构建的文件“test.dat”。 如果我尝试打开这个文件,我的程序就会出现并询问我想用那个文件做什么。

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

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

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

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

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

字符串数组 args[] 包含从命令行传递给您的程序的任何参数。 当您告诉操作系统将文件与可执行文件相关联,然后双击该文件时,操作系统会将文件名(完整路径)作为此字符串数组中的第一个参数传递给可执行文件。 棘手的部分是您不能只将文件扩展名与 jar 文件相关联,因为 jar 文件不是可执行文件。 jar 文件实际上与 java.exe 或 javaw.exe 相关联。 因此,要完成这项工作,您需要创建一个批处理文件(或取决于您的操作系统的 shell 脚本),它调用 java.exe 或 javaw.exe,将类路径设置为 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。 如果操作系统将多个文件传递给您的程序,例如您选择了多个 .dat 文件,您可以使用 %1 %2 %3 等。 这将在 Unix shell 脚本中以类似的方式完成。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM