Java-查找文件的绝对路径

Java-查找文件的绝对路径,java,Java,我需要找到用户的vlc.exe文件的路径。 我该怎么做 我读了这篇文章,并尝试使用如下代码 PathMatcher match = FileSystems.getDefault().getPathMatcher("glob:vjlc.{exe, jpg, png}"); Path filename = FileSystems.getDefault().getPath("vjlc.exe",""); if(match.matches(fi

我需要找到用户的vlc.exe文件的路径。 我该怎么做

我读了这篇文章,并尝试使用如下代码

            PathMatcher match = FileSystems.getDefault().getPathMatcher("glob:vjlc.{exe, jpg, png}");

        Path filename = FileSystems.getDefault().getPath("vjlc.exe","");

        if(match.matches(filename))
        {
            System.out.println(filename);
        }


这两个都不起作用

您可以使用该函数

我认为您正在寻找在路径上搜索vlc.exe可执行文件的方法。如果是这样的话,下面的内容应该会有所帮助:

String path = System.getenv("PATH");
String pathSeparator = System.getProperty("path.separator");

for (String pathElement : path.split(pathSeparator)) {
    File file = new File(pathElement, "vlc.exe");
    if (file.isFile()) {
        // vlc.exe exists in this location.
    }
}

我相信你在试图做一些不太正确的事情

首先,假设本地计算机上存在vlc.exe。但如果没有,会发生什么呢

第二,如果VLC决定在某个时间点(新版本发布或升级)将exe文件名更改为vlc2.exe,会发生什么情况

为了处理这种依赖关系,我建议您将vlc文件位置作为程序参数传递给main()方法。 通过这种方式,您可以创建一个批处理文件,尝试定位vlc.exe路径,并将其传递给java程序

另一种选择是设置一个环境变量,该变量将在java应用程序的安装过程中设置。安装程序可以搜索vlc.exe路径,也可以让用户进行设置。一旦设置了变量,java程序就可以从系统参数中读取它(参见此)


第三种方法是设置包含vlc exe路径的文件(*.ini like)。然后可以根据相关路径修改文件,并从中读取java程序(作为属性文件)。该文件也可以在安装过程中自动生成,也可以在安装后手动编辑。

当用户运行VLC安装程序在Windows下安装VLC media player时,安装程序会创建一个Windows注册表项
HKLM\SOFTWARE\VideoLAN\VLC\InstallDir
。您可以使用Java检索存储在密钥中的路径,如下所示:

如果存在
HKLM\SOFTWARE\VideoLAN\VLC\InstallDir
键,则表示已安装VLC。如果用户决定将VLC安装在不同的目录,而不是VLC安装程序默认建议的目录,则密钥将能够告诉您这一点


这仅在用户通过安装程序安装VLC时有效。但是,如果用户只是从其zip分发文件中提取VLC,这将不起作用,因为这种方法不会触及Windows注册表。

您的代码在哪里?您做了什么?您是否意识到您正在尝试在第一个代码示例中查找“vjlc.exe”(注意额外的“j”)路径?“需要查找用户的vlc.exe文件的路径”1)为什么?2) 如果用户没有安装VLC怎么办?我添加j只是为了测试一些东西。Andrew,因为我需要知道vlc.exe在哪里,这样我就可以通过java程序用选项启动它。看起来你正在试图找到vlc播放器的安装位置。在这种情况下,您必须首先找到它的安装位置,例如通过查询Windows注册表。它不起作用。输出是C:\WorkStation\Souptest\vlc.exe,这是错误的,这只是项目文件夹,它在末尾添加了一个“vlc.exe”。不是真的,我不想使用环境变量
String path = System.getenv("PATH");
String pathSeparator = System.getProperty("path.separator");

for (String pathElement : path.split(pathSeparator)) {
    File file = new File(pathElement, "vlc.exe");
    if (file.isFile()) {
        // vlc.exe exists in this location.
    }
}