2011-12-25 3 views
8

J'ai une question assez stupide, mais je n'ai pas été en mesure de trouver une solution pour cela:Java chemin de fichier sous Linux

Lorsque je tente de lire un fichier que je reçois un « fichier non trouvé erreur » est l'exécution. Il a compilé le fichier cependant.

Je suis sous Linux, donc j'utiliser la déclaration quelque chose comme:

Scanner s = new Scanner(new File("home/me/java/ex.txt")); 

et il me donne un rror d'exécution:

/home/me/javaException in thread "main" java.io.FileNotFoundException: home/me/java/ex.txt (No such file or directory) 
at java.io.FileInputStream.open(Native Method) 
at java.io.FileInputStream.<init>(FileInputStream.java:137) 
at java.util.Scanner.<init>(Scanner.java:653) 
at test.main(test.java:14) 

J'ai essayé de changer toutes les choses possibles le long des lignes de noms de fichiers, mais rien ne semble fonctionner.

Des indices quant à la raison pour laquelle cela se produit? où Java recherche-t-il les fichiers par défaut?

+1

indique que votre emplacement de fichier n'a pas été trouvé. Je suppose que votre chemin est "/home/me/java/ex.txt" dans le système Linux. –

+0

Quelle est la valeur de ['user.home'] (http://pscode.org/prop/all.html?prop=user.home&format=TSV) sur ce système? –

Répondre

14

Il semble qu'il vous manque une barre oblique. Peut-être essayer:

Scanner s = new Scanner(new File("/home/me/java/ex.txt")); 

(comme à l'endroit où il recherche les fichiers par défaut, il est où la machine virtuelle Java est exécuté à partir des chemins relatifs comme celui que vous avez dans votre question)

+1

Merci Todd. C'était le slash principal. Cela a résolu le problème! Que je suis bête! – AJW

10

Je pense que Todd est correct , mais je pense qu'il y a une autre chose à considérer. Vous pouvez obtenir de manière fiable le répertoire de base à partir de la JVM au moment de l'exécution, puis vous pouvez créer des objets de fichiers relatifs à cet emplacement. Ce n'est pas tellement plus de problèmes, et c'est quelque chose que vous apprécierez si jamais vous passez à un autre ordinateur ou système d'exploitation.

File homedir = new File(System.getProperty("user.home")); 
File fileToRead = new File(homedir, "java/ex.txt"); 
+3

En cas de portage vers * n'importe quel autre système d'exploitation, je suggère d'échanger le ''/"' dans le chemin de 'System.getProperty (" file.separator ")' ou de construire alternativement le chemin dans les parties utilisant ce constructeur. Sinon, +1 –

+0

Merci facture pour ce bon conseil. Je vais mettre en œuvre tout de suite. – AJW

+3

Si vous ciblez unix, linux, OS X ou Windows, la barre oblique fonctionnera. Oui, même Windows. – Bill

Questions connexes