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

时间:2018-09-06 22:04:59

标签: java file inputstream classloader getresource

File.txt存在于另一个Java项目中(比如说Project 1,存在于本地计算机中)。 我有另一个Java项目(比如Project 2,也存在于本地计算机中),我想从其中使用 getResourceAsStream 读取此文件内容。

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

/Users/userName/RepoName/Project1/src/main/resources/file.txt

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

textFilePath格式-

readFile(textFilePath);
String textFilePath = "/absolute/path/to/file.txt";

我无法将file.txt从Project1移到Project2。

关于如何解决此问题的任何想法?

注意-当我在SomeClassName.java(在Project 2中)中编写一个方法来读写file.txt的内容(在Project 1中)时,它工作正常。

示例-如果我调用方法

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

readFile定义为-

var myconverter = new ValueConverter<bool, int>(x => x ? 1 : 0, x => x == 1);
builder.Entity<ApplicationUser>(b => {
      b.Property(p => p.EmailConfirmed).HasConversion(myconverter);
});

它可以读取并打印文件内容。

0 个答案:

没有答案