getResourceAsStream () возвращает ноль при чтении из файла в другом проекте - PullRequest
0 голосов
/ 07 сентября 2018

File.txt существует в другом проекте Java (скажем, Project 1, присутствует на локальном компьютере). У меня есть другой Java-проект (скажем, Project 2, также присутствующий на локальной машине), из которого я хочу прочитать содержимое этого файла, используя getResourceAsStream .

Однако, только если File.txt существует в той же папке, что и SomeClassName.java (т.е. оба существуют в Project 2), он инициализирует InputStream, иначе возвращает ноль (путь не найден).

String textFilePath = "/absolute/path/to/file.txt";
ClassLoader clTest = SomeClassName.class.getClassLoader();
InputStream isTest = clTest.getResourceAsStream(textFilePath);

Я пытался использовать абсолютный путь файла, но он не работает.

textFilePath format-

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

Я НЕ МОГУ переместить file.txt из Project1 в Project 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);
} 

Он прекрасно читает и печатает содержимое файла.

...