2010-06-14 59 views
0

我有一個words.txt文件,我已將它放在特定的java包中,並且需要從同一位置讀取它。我不控制部署,所以我不知道包的部署位置。如何從包中讀取文件 - 類似於Java中的資源包

示例位置:com/example/files/words.txt。

我知道如何使用ResourceBundle類從包層次結構而不是相對/絕對路徑讀取屬性文件。像ResourceBundle.getBundle(com.example.files.words)是否有類似的一般文件,使我可以從包層次結構而不是一些絕對/相對路徑讀取它?

回答

4

可以使用getResourceAsStream()方法(在類Class中定義)從類路徑檢索資源。如果類WordReader位於包com.example那麼路徑的資源文件應該是files/words.txt

package com.example; 

public class WordReader { 

    public void readWords() { 
    InputStream is = getClass().getResourceAsStream("files/words.txt"); 
    StringBuilder sb = new StringBuilder(); 
    for(Scanner sc = new Scanner(is); sc.hasNext();) 
     sb.append(sc.nextLine()).append('\n'); 

    String content = sb.toString(); 
    } 
} 
+0

看起來很有前途,但就是這個,你怎麼做到這一點?這應該是部署的一個相當常見的問題。我只是想知道這是否是最好的做法。 – 2010-06-14 11:51:09

+0

是的。這種方法完美。謝謝! – 2010-06-15 07:31:44