Java getResourceAsStream()从不同项目中的文件读取时返回null

Java getResourceAsStream()从不同项目中的文件读取时返回null,java,file,inputstream,classloader,getresource,Java,File,Inputstream,Classloader,Getresource,txt存在于不同的java项目中(比如说项目1,存在于本地机器中)。 我还有另一个java项目(比如说项目2,也存在于本地机器中),我想从中使用getResourceAsStream读取此文件内容 但是,只有当File.txt与SomeClassName.java存在于同一文件夹中(即两者都存在于项目2中)时,它才会初始化InputStream,否则返回null(未找到路径) 我尝试使用文件的绝对路径,但不起作用 文本文件路径格式- /Users/userName/RepoName/Projec

txt存在于不同的java项目中(比如说项目1,存在于本地机器中)。 我还有另一个java项目(比如说项目2,也存在于本地机器中),我想从中使用getResourceAsStream读取此文件内容

但是,只有当File.txt与SomeClassName.java存在于同一文件夹中(即两者都存在于项目2中)时,它才会初始化InputStream,否则返回null(未找到路径)

我尝试使用文件的绝对路径,但不起作用

文本文件路径格式-

/Users/userName/RepoName/Project1/src/main/resources/file.txt
我无法将文件.txt从项目1移动到项目2

关于如何解决这个问题有什么想法吗

注意-当我在SomeClassName.java(在项目2中)中编写一个方法来读写file.txt(在项目1中)的内容时,它工作得很好

示例-如果我调用该方法

readFile(textFilePath);
String textFilePath = "/absolute/path/to/file.txt";
readFile定义为-

private static void readFile(String propFile) throws IOException {
    // TODO Auto-generated method stub
    InputStream is = new FileInputStream(propFile); 
    BufferedReader buf = new BufferedReader(new InputStreamReader(is)); 
    String line = buf.readLine(); 
    StringBuilder sb = new StringBuilder(); 
    while(line != null) { 
        sb.append(line).append("\n"); 
        line = buf.readLine(); 
        } 
    String fileAsString = sb.toString(); 
    System.out.println("Contents : " + fileAsString);
} 

它可以很好地读取和打印文件内容

资源名不是文件名,不能指定绝对路径,它总是根据类加载器(searchpath)解析。如果定义IDE依赖项或将另一个项目添加到类路径,它将找到名称(如果资源名称是该项目中的绝对或相对包),请确保另一个项目位于类路径上或使用文件而不是资源
private static void readFile(String propFile) throws IOException {
    // TODO Auto-generated method stub
    InputStream is = new FileInputStream(propFile); 
    BufferedReader buf = new BufferedReader(new InputStreamReader(is)); 
    String line = buf.readLine(); 
    StringBuilder sb = new StringBuilder(); 
    while(line != null) { 
        sb.append(line).append("\n"); 
        line = buf.readLine(); 
        } 
    String fileAsString = sb.toString(); 
    System.out.println("Contents : " + fileAsString);
}