2012-03-13 41 views
1

我有一個初始化文件(initialize.java),它使用fileInputStream從fileInput.txt中提取數據,但它們都在不同的目錄中。在另一個目錄中爲緩衝讀取器選擇一個文件

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

但是這並沒有奏效。

如何訪問txt文件以及使用「./resources」和「/ resources」之間有什麼區別?

感謝您閱讀本文。

+0

感謝所有幫助人員。我意識到這是我的大錯,但至少我學會了「./」目錄的東西:) – puissant 2012-03-13 07:45:08

回答

5

的差別是巨大的。從根目錄上//開始與路徑/啓動。以./開頭或從當前應用程序目錄開始的路徑。致電

System.out.println(new File("."). getAbsolutePath())檢查你在哪裏?

+0

我傻。我做的絕對路徑的東西,發現它實際上是項目/ src目錄/庫,我不得不做一個「新的FileInputStream(「SRC /資源/ ...」)謝謝! – puissant 2012-03-13 07:43:41

+1

也許問題是,資源是在資源的根文件夾。因此,嘗試[InputStream中的= ClassLoader.getResourceAsStream(「/文本/ 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「)',我從來不知道:)現在根是你的類路徑根。 – 2012-03-13 07:58:55

2

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

試過這種?

2

"./resources/text/fileInput.txt""resources/text/fileInput.txt"作品 但"/resources/text/fileInput.txt"沒有。

注:這是有效的,如果該文件夾命名爲「資源」位於項目的根目錄下。

1

正如其他答案所示,傳遞給FileInputStream的路徑取決於操作系統以及路徑是相對路徑還是絕對路徑。讀取文件的另一種方法是使用Class.getResourceAsStream()。例如

InputStream爲= this.getClass()。的getResourceAsStream( 「/資源/文本/ fileInput.txt」)

對於上述工作,你需要有/resources父文件夾在類路徑中。有關getResourceAsStream如何工作的更多信息,請參閱SO question

相關問題