2012-02-11 145 views
-1

我需要找到用户的vlc.exe文件的路径。 我该怎么做?Java - 查找文件的绝对路径

我读到这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

你的代码在哪里?你做了什么? – 2012-02-11 13:10:43

+1

您是否意识到您正在尝试在第一个代码示例中查找“vjlc.exe”(注意额外的'j')路径? – 2012-02-11 13:16:39

+0

*“需要找到用户vlc的路径。exe文件“* 1)为什么?2)如果用户没有安装VLC会怎么样? – 2012-02-11 13:19:48

回答

0

可以使用getAbsolutePath()功能代码尝试。

+0

我已经尝试过了,它没有起作用 T他输出的是C:\ WorkStation \ Souptest \ vlc.exe,这是错误的,这只是项目文件夹,并在最后添加了一个'vlc.exe'。 – user1021085 2012-02-11 13:10:46

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. 
    } 
} 
+0

不是我真的不想使用环境变量 – user1021085 2012-02-11 13:43:10

1

我相信你正在尝试做一些事情,是不完全正确。

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

其次,如果VLC决定在某些时候会发生什么(新建出来,或升级)来改变EXE文件名vlc2.exe?

为了应对这种依赖性的,我建议你通过VLC文件位置作为程序参数的main()方法。 这样,您可以创建一个批处理文件,尝试查找vlc.exe路径,并将其传递给java程序。

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

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

0

当用户运行安装程序VLC在Windows下安装VLC媒体播放器,安装程序会创建一个注册表键值项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注册表。