2012-09-09 70 views
0

我想從jar文件運行程序時讀取文本文件。 我來accros,我需要使用InputStream來讀取文件。的代碼片段:從那時起從InputStream對象讀取文件

buffer = new BufferedInputStream(this.getClass().getResourceAsStream((getClass().getClassLoader().getResource("English_names.txt").getPath()))); 


System.out.println(buffer.read()+" yeas"); 

在這條線System.out.println(buffer.read()+" yeas");程序停止,沒有任何反應。一旦輸出buffer對象的內容,它就不爲空。 可能是什麼問題?

+0

你的第一行似乎有點複雜。哪裏存在「English_names.txt」? – SJuan76

+0

在這個階段它位於項目的目錄中。 – uml

+0

好消息,我已經嘗試過FileInputStream傳入InputStream,現在它工作正常。希望它能在您使用jar文件運行應用程序的同時工作。這是使用InputStream – uml

回答

1

InputStream#read()

此方法一直阻塞輸入數據是可用的,當檢測到流的末尾,或拋出異常。

所以基本上,流似乎在等待內容。我猜這就是你如何構造流,您可以簡化建設:

InputStream resourceStream = getClass().getResourceAsStream("/English_names.txt"); 
InputStream buffer = new BufferedInputStream(resourceStream); 

我還檢查以確保resourceStream不是空。

+0

你是對的'resourceStream'是空的,但問題是什麼,文件在那裏... – uml

+0

@uml:在這種情況下,'getResourceAsStream'用於獲取如果你想打開一個不在類路徑上的文件,或許你應該檢查'FileInputStream'。 –

+0

/D:/ Aristotelis/JAVA/Msc_project/code/branches/Crypto/bin/English_names .txt Tha是某些方法返回的路徑。爲什麼在D分區前有'/'?可以嗎? – uml