Java-查找文件的绝对路径
我需要找到用户的vlc.exe文件的路径。 我该怎么做 我读了这篇文章,并尝试使用如下代码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
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.
}
}