2009-10-06 2 views
1

Привет Я написал такую ​​функцию в Eclipse:затмение и путь

public static ArrayList<String> getMails(){ 
    ArrayList<String> mails = new ArrayList<String>(); 
     try{ 
      FileInputStream fstream = new FileInputStream("mails.txt"); 
      DataInputStream in = new DataInputStream(fstream); 
       BufferedReader br = new BufferedReader(new InputStreamReader(in)); 
      String strLine; 
      while ((strLine = br.readLine()) != null) { 
       mails.add(strLine.trim()); 
      } 

      in.close(); 
      }catch (Exception e){//Catch exception if any 
       System.err.println("Error: " + e.getMessage()); 
      } 

    return mails; 
} 

Файл mails.txt находится под рабочей области/Projectname, я хочу сохранить этот пункт в рамках рабочего пространства/Projectname/bin/директории, как относительный путь, поэтому всякий раз, когда я копирую каталог workspace/projectname // bin в другое место или компьютер, пусть это работает. Однако, когда я пытаюсь это сделать, я получаю исключение «FileNotFound». Как я могу это исправить ? Благодаря

+0

Смотрите также http://stackoverflow.com/questions/1464291/how-to-really-read-text-file-from-classpath -в-ява – VonC

ответ

5

Если держать текстовый файл в источнике каталога (а не каталог Bin), где класс живет (тот, который вы уже взяты выше), то файл будет автоматически скопирован в директорию бен во время сборки. Вы бы прочитать его как ресурс, а не как файл:

final InputStream in = MyClass.class.getResourceAsStream("mails.txt"); 
final Reader isr = new InputStreamReader(in, "ISO-8859-1"); //or whatever 
final BufferedReader br = new BufferedReader(isr); 
try { 
    // ... 
} finally { 
    br.close(); 
} 
Смежные вопросы