如何在Java程序中实现打开文件?

5
我有一个基本的,简单的问题,可能很愚蠢,但是我该如何实现拖拽文件到我的java程序并打开它呢?
我为这个基本问题搜索了很长时间......
据我所知,你不能把它拖到.jar文件中,因为它不可执行。你必须创建一个.exe,它也会打开你的.jar,但仅此而已!我真的很想知道怎么做 :)
如果我能通过搜索这个关键字得到答案,那就足够了。
谢谢,Leander //编辑:我可能表达得有点复杂。以后我想在桌面上有一个快捷方式,在这个快捷方式上拖动任何文件,程序就会打开这个文件(目前只是将其移动到特定位置)。
我不知道这个代码是什么,甚至不知道如何在谷歌中搜索它(我只收到了如何实现“打开”的问题和Desktop.open(File f)的答案)。

1
取决于操作系统,我怀疑。 - bmargulies
可能是 http://superuser.com/questions/125343/windows-open-with-with-java-and-a-jar-file 的重复问题。 - Imre L
你说的“只是将它移动到特定位置”是什么意思?你不能让jar文件具有拖放功能,但你可以创建一个快捷方式来添加“拖放”功能,然后在代码中处理它(请参见我的回答)。 - Imre L
如果这是一个路径,程序将根据您的时间和日期将文件复制到特定位置,然后删除原始文件。 - Leander
3个回答

4

仅适用于Windows操作系统:

选项1:

在您的jar文件目录下创建一个批处理文件(或任何您喜欢的位置,但然后您需要调整路径,您还可以从批处理文件创建快捷方式)。

@ECHO OFF
start java -jar %~dp0MYAPP.jar %1

选项2:

  • 创建一个快捷方式(右键 - 新建 - 快捷方式)
  • 输入位置“java -jar C:\path\to\myapp.jar”

如果你的jar文件接受文件名作为参数,拖放操作也会生效。

public class Main {

    public static void main(String[] args) {
        if (args.length == 0)
            System.out.println("No arguments");
        else
            System.out.println("1st argument: " + args[0]);
    }

}

我遇到了完全相同的问题。我的JAR文件在Windows桌面上有一个快捷方式,但其中只包含了JAR文件的路径,而没有java命令。我修改了这个快捷方式,然后问题就解决了。我只是使用javaw而不是java命令来避免出现DOS窗口。在我看来,第二个选项解决了这个问题。非常感谢! - nokul

0

开始阅读的地方是JDK 6拖放文档。或者你可以直接从拖放教程开始。

如果你想创建一个桌面图标,当你将文件拖放到它上面时会打开你的应用程序,这取决于操作系统。我认为Launch4j将支持此功能,尽管我没有以这种方式使用过它。


他的问题是当他拖动某个图标时如何启动程序,而不是在程序运行后如何使D&D工作,我想。 - bmargulies
@bmargulies - 啊,如果是这样的话,正如你在评论中指出的那样,一切都取决于操作系统。您可以尝试使用Launch4j来解决问题。 - Ted Hopp
嗯,我搜索了整个网页,但仍然不知道如何实现它。主方法中的参数是否包含对象路径? - Leander
@user1080014 - 当您将文件拖放到应用程序图标上时,我认为Windows默认会构建一个带有文件名的命令行。因此,它们将成为main(String[]args)的参数。(它们是否是唯一的参数取决于您指定Launch4j在创建桌面快捷方式时使用的命令行。) 我不知道是否可以使用Windows提供的IDropTarget机制来给您更多的控制。 - Ted Hopp

0
在Windows上,您可以创建.bat文件,如果您将文件拖放到该文件上,则会将文件名作为第一个参数传递。
因此,代码:
echo %1
pause

输出文件名,这样你就可以像这样启动你的Java程序

java -jar myApp.jar MyAppClass %1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接