2012-03-13 2 views
1

fileInputStreamを使用してfileInput.txtからデータを取り込む初期化ファイル(initialize.java)がありますが、どちらも別のディレクトリにあります。別のディレクトリでbufferedReaderのファイルを選択する

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

initialize.javaの私のコードは次のとおりです。

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

しかし、ファイルを読み込むことができません。私も試しました

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

しかし、それもうまくいきませんでした。

"./resources"と "/ resources"の違いは何ですか?

お読みいただきありがとうございます。

+0

を参照してください。私はそれが私の大きな間違いだと思ったが、少なくとも私は "./"ディレクトリのものを学んだ。 – puissant

答えて

5

違いは大きいです。 //で始まるパスは、ルートディレクトリから/で始まります。現在のアプリケーションディレクトリから開始するか、または開始しないパス。お電話ください

System.out.println(new File("."). getAbsolutePath())現在地を確認しますか?

+0

愚かな私..絶対パスのことをして、実際にProject/src/libraryであることが分かった。新しいFileInputStream( "src/resources/...")ありがとうございました! – puissant

+1

おそらく問題は、リソースがリソースのルートフォルダであるということです。[InputStream in = ClassLoader.getResourceAsStream( "/ text/fileInput.txt") ](http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResourceAsStream(java.lang.String))または 'InputStream in = ClassLoader.getResourceAsStream(" text/fileInput .txt ")'、私は決して知らなかった:)。ルートはあなたのクラスパスのルートです。 –

2

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

試しましたか?

2

"./resources/text/fileInput.txt"または"resources/text/fileInput.txt"作品、 しかし、"/resources/text/fileInput.txt"はありません。

注:これは、「resources」という名前のフォルダがプロジェクトのルートディレクトリの下にある場合に有効です。

1

他の答えとして、FileInputStreamに渡すパスは、OSによって異なります。パスが相対パスまたは絶対パスの場合も同様です。ファイルを読むもう1つの方法は、代わりにClass.getResourceAsStream()を使用することです。例えば

InputStreamがある= this.getClass()。getResourceAsStream以上が動作するために、あなたは/resourcesの親フォルダを持っている必要があります( "/リソース/テキスト/ fileInput.txt")

クラスパスで。 getResourceAsStreamの動作の詳細については、SO question

関連する問題