2011-11-18 2 views
1

Если у меня есть проект, у которого есть текстовый файл внутри него, и я хочу, чтобы иметь возможность читать этот текстовый файл, который будет храниться в моем исполняемом банке, то как я могу это сделать? это? В настоящее время у меня есть установка как этотКак загрузить текстовый файл из runnable jar

public void someMethod() 
{ 
    File f = new File("aFileInEclipseResourcesFolder.txt"); 

    doSomethingWithFile(f); 
} 

private void doSomethingWithFile(File f) 
{ 
    //print the data in the file; 
} 

выпуск является приложение не может найти файл, если я использую этот подход, но если я использовать жесткий кодированный путь к файлу, то он работает. Я знаю, что вы можете использовать getClass().getResourceAsStream(), но это не позволит мне получить уже записанный файл в файл-объект, не переписывая его снова, или это предположение неверно?

С уважением

+0

Вы пробовали поставить «./aFileinEclipse.txt»? «./» делает поиск в текущем каталоге. AKA, где находится .jar. – Max

+0

Проблема заключается в том, что файл jar используется в качестве аддона другим приложением, поэтому, когда я печатаю рабочий каталог, он печатает папку, используемую другим приложением, это правильно? – Biscuit128

+0

Я признаю, что в этом случае я не уверен, где он будет обозначать текущий каталог. Но не можете ли вы просто поместить файл .txt в каталог основной программы? – Max

ответ

0

Вы не хотите использовать getResourceAsStream() вы хотите

public URL getResource(String name) 

URL-адрес даст вам путь к ресурсу, и вы можете создать объект File из этого.

+0

это полуправильно, но он по-прежнему выглядит не в том месте для файла. Используя вышеописанный метод, программа просматривает папку, в которой находится файл jar. Если я печатаю путь к файлу, я получаю 'файл:/c: /....../ jarFileName!/NameOfTextFile.txt', это правильно? – Biscuit128

+0

Да, это должен быть правильный путь для файла. Я использовал этот метод и ранее создал объект File из URL. – Danny

0

Когда я имел эту проблему около года назад единственное решение, которое я нашел было найти местоположение файла JAR (который на самом деле просто почтовый файл), пройдя через него, и найти файл, который я хотел ,

Есть лучшие методы, но они никогда не работали для меня (go figure), поэтому держите это в крайнем случае.

1

GetResourceAsStream предоставляет InputStream, который вы можете использовать, как FileInputStream. Вы можете использовать:

InputStream is = getClass().getResourceAsStream("a/b/c/aFileInEclipseResourcesFolder.txt"); 
BufferedReader in = new BufferedReader(new InputStreamReader(is, "UTF-8")); // Or "Cp1252"? 
... 
Смежные вопросы