我需要找到用户的vlc.exe文件的路径。 我怎么能这样做?
我读了这个http://docs.oracle.com/javase/tutorial/essential/io/find.html并尝试使用像
这样的代码 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);
}
和
File fil = new File("vlc.exe");
System.out.println( fil.getAbsolutePath() );
两者都不起作用
答案 0 :(得分:1)
我相信你正在尝试做一些不太正确的事情。
首先,您假设本地计算机上存在vlc.exe。但如果不这样做又会发生什么?
其次,如果VLC在某个时候决定(新版本出来或升级)将exe文件名更改为vlc2.exe会发生什么?
为了处理这种依赖,我建议你将vlc文件位置作为main()方法的程序参数传递。 这样,您可以创建一个试图找到vlc.exe路径的批处理文件,并将其传递给java程序。
另一种方法是设置一个环境变量,该变量将在安装java应用程序期间设置。安装可以搜索vlc.exe路径,或让用户进行设置。一旦设置了变量,java程序就可以从系统参数中读取它(参见example)。
第三种方法是设置一个包含vlc exe路径的设置文件(* .ini之类)。然后,您可以根据相关路径修改文件,并从中读取java程序(作为属性文件)。该文件也可以在安装过程中自动生成,也可以在安装后手动编辑。
答案 1 :(得分:0)
您可以使用getAbsolutePath()功能。
答案 2 :(得分:0)
我认为您正在寻找在PATH上搜索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.
}
}
答案 3 :(得分:0)
当用户运行VLC安装程序以在Windows下安装VLC媒体播放器时,安装程序会创建Windows注册表项HKLM\SOFTWARE\VideoLAN\VLC\InstallDir
。您可以使用Java检索存储在密钥中的路径,如下所示:
http://www.davidc.net/programming/java/reading-windows-registry-java-without-jni
read/write to Windows Registry using Java
如果存在HKLM\SOFTWARE\VideoLAN\VLC\InstallDir
密钥,则表示已安装VLC。如果用户决定将VLC安装在与默认情况下VLC安装程序建议的目录不同的目录上,则该密钥将能够告诉您。
仅当用户通过其安装程序安装VLC时才有效。但是,如果用户只是从其zip分发文件中提取VLC,它就无法工作,因为这种方法不会触及Windows注册表。