如何从包中读取文件 - 类似于Java中的资源包

时间:2010-06-14 11:31:53

标签: java deployment file installation io

我有一个words.txt文件,我放在一个特定的java包中,需要从同一个位置读取它。我不控制部署,因此我不知道将在何处部署软件包。

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

我知道如何使用ResourceBundle类从包层次结构中读取属性文件,而不是相对/绝对路径。喜欢 ResourceBundle.getBundle(com.example.files.words)对于一般文件是否有类似的东西,以便我可以从包层次结构中读取它而不是某些绝对/相对路径?

1 个答案:

答案 0 :(得分: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();
   }
}