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

如何从包中读取文件—类似于Java中的资源包,java,deployment,file,installation,io,Java,Deployment,File,Installation,Io,我有一个words.txt文件,我把它放在一个特定的java包中,需要从同一个位置读取它。我不控制部署,所以我不知道包将部署在哪里 示例位置:com/Example/files/words.txt 我知道如何使用ResourceBundle类从包层次结构而不是相对/绝对路径读取属性文件。像ResourceBundle.getBundle(com.example.files.words)一样,对于一般文件是否有类似的内容,以便我可以从包层次结构而不是从某个绝对/相对路径读取它 您可以使用getRe

我有一个words.txt文件,我把它放在一个特定的java包中,需要从同一个位置读取它。我不控制部署,所以我不知道包将部署在哪里

示例位置:com/Example/files/words.txt


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

您可以使用
getResourceAsStream()
方法(在class
class
中定义)从类路径检索资源。如果class
WordReader
位于package
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();
   }
}

您可以使用
getResourceAsStream()
方法(在class
class
中定义)从类路径检索资源。如果class
WordReader
位于package
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();
   }
}

看起来很有希望,但你是这样做的吗?这应该是部署中非常常见的问题。我只是想知道这是否是最好的做法。看起来很有希望,但你是这样做的吗?这应该是部署中非常常见的问题。我只是想知道这是否是最好的做法。