Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用java编写的程序双击打开文件_Java - Fatal编程技术网

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

用java编写的程序双击打开文件,java,Java,我想知道,在我的程序中,只要双击一个文件,就可以打开一个用java编写的文件吗 例如: 在我的桌面上有一个由我的程序生成的文件“test.dat”。如果我试图打开这个文件,我的程序就会出现,并询问我想对该文件做什么 是否可以使用java实现该功能?双击“打开”文件是windows操作系统的一项功能,它通过将文件扩展名映射到特定程序来控制 如果您想运行打包在jar文件中的java程序,您必须创建所谓的“可运行”jar,并将jar扩展映射到名为java或javaw的程序,由操作系统决定哪些应用程序与

我想知道,在我的程序中,只要双击一个文件,就可以打开一个用java编写的文件吗

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

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

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


如果您想运行打包在
jar
文件中的java程序,您必须创建所谓的“可运行”jar,并将jar扩展映射到名为
java
javaw
的程序,由操作系统决定哪些应用程序与给定扩展相关联。您可以将操作系统配置为使用您的程序打开所有文件。或者创建一个快捷方式或启动器,告诉您使用什么。

我理解您的要求。您想知道如何将参数从操作系统传递到应用程序,然后调用openfile方法

您的java程序有一个类,该类有一个被调用以启动应用程序的主方法。此类在清单文件中作为主类列出: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等。这将在unixshell脚本中以类似的方式完成

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

这取决于您的IDE,但您希望创建一个jar文件:我认为这不是他的意思。他想用自己构建的程序保存数据,然后用自己的程序双击读取数据。是的,Eric,这正是我想要实现的我想你应该重新表述这个问题。您希望有一种编程方法来设置要使用程序打开的文件扩展名的操作系统首选项,例如file.myformat->Windows/linux发行版/MacOS方法,用于将Myprogram设置为myformat文件开启器。这样做的方式。。这就是你想要的吗?是的,这就是我想要实现的。实际上你不能确定问题是关于windows的。好的,谢谢,但如何在我的程序中处理这个问题?我的意思是,如果用户“打开”文件,我的程序必须用类似“openFile(stringpath)”之类的方法得到通知。如何设置应该调用哪个方法?