2013-12-04 4 views
0

У меня есть приложение, которое должно читать файлы по строкам. Я использую следующий код, и все в порядке.Установить относительный путь для чтения файлов с помощью BufferedReader

public ArrayList <String[]> LoadServersFile(String filename){ 
BufferedReader br=null; 
ArrayList <String> result = new ArrayList(); 
try { 
    String sCurrentLine; 
    InputStreamReader reader = new InputStreamReader(this.getClass().getResourceAsStream("/"+filename)); 
    br = new BufferedReader(new FileReader(filename)); 

    while ((sCurrentLine = br.readLine()) != null) { 
     result.add(sCurrentLine); 
    } 
    br.close(); 
} catch (FileNotFoundException ex) { 
    Logger.getLogger(FilesIO.class.getName()).log(Level.SEVERE, null, ex); 
} catch (IOException ex) { 
    Logger.getLogger(FilesIO.class.getName()).log(Level.SEVERE, null, ex); 
} 
return result; 

}

Но после составления проекта и его запуска, br.readLine() всегда нуль. Установка "/file.txt" и положить этот файл в C:/диск исправляет ошибку, но я нужен этот файл, чтобы быть в папке с моим .jar файл

ответ

3

Вы можете получить файл с помощью метода getResourceAsStream:

InputStreamReader reader = new InputStreamReader(this.getClass().getResourceAsStream("/file.txt")); 
BufferedReader br = new BufferedReader(reader); 
+0

не должен 't это без '/'? – Ben

+1

@Ben Нет, потому что мы не используем загрузчик классов. http://stackoverflow.com/questions/6608795/what-is-the-difference-between-class-getresource-and-classloader-getresource – TheEwook

+0

@ TheEwook It бросает мне NullException, когда я пытаюсь создать читателя. И измените его на (читатель), а не на (isReader) – crzbt

Смежные вопросы