Java - 查找文件的绝对路径

时间:2012-02-11 13:04:26

标签: java

我需要找到用户的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() );

两者都不起作用

4 个答案:

答案 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注册表。