2012-02-11 4 views
-1

J'ai besoin de trouver le chemin d'accès au fichier vlc.exe de l'utilisateur. Comment puis-je faire cela?Java - Trouver le chemin absolu du fichier

Je lis ce http://docs.oracle.com/javase/tutorial/essential/io/find.html et essayé d'utiliser le code comme

  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); 
     } 

et

 File fil = new File("vlc.exe"); 
    System.out.println(fil.getAbsolutePath()); 

ni qui a travaillé

+0

Où est votre code? Qu'est-ce que tu as fait? –

+1

Avez-vous réalisé que vous essayez de trouver le chemin "vjlc.exe" (notice extra 'j') dans le premier exemple de code? –

+0

* "besoin de trouver le chemin vers le vlc de l'utilisateur.exe fichier "* 1) Pourquoi? 2) Que faire si l'utilisateur n'a pas installé VLC? –

Répondre

0

Vous pouvez utiliser la fonction getAbsolutePath().

+0

J'ai essayé cela, ça n'a pas fonctionné T La sortie était C: \ WorkStation \ Souptest \ vlc.exe, ce qui est faux, c'est juste le dossier du projet et il a ajouté un 'vlc.exe' à la fin. – user1021085

0

Je pense que vous cherchez des façons de rechercher l'exécutable vlc.exe sur le PATH. Si oui, quelque chose comme le suivant devrait aider:

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

Pas vraiment je ne veux pas utiliser des variables d'environnement – user1021085

1

Je crois que vous essayez de faire quelque chose qui n'est pas tout à fait raison. Tout d'abord, vous supposez que vlc.exe existe sur la machine locale. Mais que se passe-t-il si ce n'est pas le cas? Deuxièmement, que se passe-t-il si VLC décide à un moment donné (la nouvelle version sort, ou mise à jour) de changer le nom du fichier exe en vlc2.exe? Pour traiter ce type de dépendance, je suggère que vous passiez l'emplacement du fichier vlc en tant qu'argument de programme à la méthode main(). De cette façon, vous pouvez créer un fichier de commandes qui essaie de localiser le chemin vlc.exe et le transmettre au programme Java. Une autre solution consiste à configurer une variable d'environnement qui sera configurée lors de l'installation de votre application Java. L'installation peut rechercher le chemin vlc.exe ou demander à l'utilisateur de le configurer. Une fois la variable définie, le programme Java peut la lire à partir des arguments système (voir example).

Une troisième façon est d'avoir un fichier de paramètres (* .ini like), qui contiendra le chemin vlc exe. Vous pouvez ensuite modifier le fichier en fonction du chemin d'accès approprié et le lire en tant que fichier de propriétés. Le fichier peut également être généré automatiquement lors du processus d'installation ou manuellement après l'installation.

0

Lorsqu'un utilisateur exécute le programme d'installation de VLC pour installer le lecteur multimédia VLC sous Windows, le programme d'installation crée une entrée de clé de registre Windows HKLM\SOFTWARE\VideoLAN\VLC\InstallDir. Vous pouvez récupérer le chemin stocké dans la clé en utilisant Java comme suit:

http://www.davidc.net/programming/java/reading-windows-registry-java-without-jni

read/write to Windows Registry using Java

Si la clé HKLM\SOFTWARE\VideoLAN\VLC\InstallDir est présent, vous savez VLC est installé. Si l'utilisateur décide d'installer VLC dans un répertoire différent de celui proposé par défaut par l'installateur VLC, la clé pourra vous le dire. Cela fonctionne uniquement lorsque l'utilisateur installe VLC via son programme d'installation. Mais, cela ne fonctionnera pas si l'utilisateur extrait simplement VLC de son fichier de distribution zip puisque cette approche ne touchera pas le registre de Windows.

Questions connexes