2012-03-13 5 views
1

J'ai un fichier d'initialisation (initialize.java) qui extrait les données de fileInput.txt en utilisant un fichier FileInputStream, mais les deux sont dans des répertoires différents.Sélection d'un fichier dans un autre répertoire pour un bufferedReader

Project/library/initialize.java 
Project/resources/text/fileInput.txt 

mon code dans initialize.java est:

FileInputStream fstream = new FileInputStream("/resources/text/fileInput.txt"); 

Mais le fichier ne peut être lu. J'ai également essayé

FileInputStream fstream = new FileInputStream("./resources/text/fileInput.txt"); 

Mais cela n'a pas fonctionné aussi.

Comment puis-je accéder au fichier txt et quelle est la différence entre "./resources" et "/ resources"?

Merci d'avoir lu ceci. FileInputStream fstream = new FileInputStream ("resources/text/fileInput.txt")

+0

Merci pour toute l'aide les gars. Je me suis rendu compte que c'était ma grosse erreur mais au moins j'ai appris les trucs "./" Directory :) – puissant

Répondre

5

La différence est énorme. Sur // le chemin commençant par/commence à partir du répertoire racine. Le chemin commençant par ./ ​​ou sans partir du répertoire d'application actuel. Appelez

System.out.println(new File("."). getAbsolutePath()) pour vérifier où vous êtes?

+0

Silly moi .. J'ai fait le chemin absolu et j'ai découvert que c'était en fait Project/src/library et que je devais faire un " nouveau FileInputStream ("src/resources/...") merci – puissant

+1

Peut-être que le problème est que les ressources sont votre dossier racine dans les ressources.Veuillez essayer [InputStream in = ClassLoader.getResourceAsStream ("/ text/fileInput.txt") ] (http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResourceAsStream (java.lang.String)) ou 'InputStream in = ClassLoader.getResourceAsStream (" text/fileInput .txt ")', je n'ai jamais connu :). Maintenant, la racine est votre racine de classpath. –

2

Vous avez essayé cela?

2

"./resources/text/fileInput.txt" ou "resources/text/fileInput.txt" fonctionne, mais pas "/resources/text/fileInput.txt".

Remarque: Ceci est valide si le dossier nommé "resources" se trouve dans le répertoire racine de votre projet.

1

Comme le suggèrent les autres réponses, le chemin que vous passez à FileInputStream dépend du système d'exploitation et également si le chemin est un chemin relatif ou absolu. Une autre façon de lire le fichier est d'utiliser Class.getResourceAsStream() à la place. par exemple.

InputStream est = this.getClass(). GetResourceAsStream ("/ resources/text/fileInput.txt")

Pour ce qui précède au travail, vous devez avoir le dossier parent de /resources dans le classpath. Pour plus d'informations sur comment fonctionne getResourceAsStream, voir SO question

Questions connexes