2010-12-05 3 views
9

Я пытаюсь прочитать текстовый файл в определенном пакете, но он не может быть найден. Я могу прочитать его, вставив абсолютный путь, но я хочу его прочитать без вставки абсолютный путь.Чтение txt-файла с определенного пакета Java

String texto = "Utils/CEP/Cidades/" + estado + ".txt"; 
FileReader fr = new FileReader(texto); 
BufferedReader in = new BufferedReader(fr); 

Как мне это сделать?

Благодаря

+0

Что значит «в определенном пакете»? Какой пакет? – skaffman 2010-12-05 21:36:01

+0

Это похоже на дубликат на следующий вопрос: http://stackoverflow.com/questions/4359876/how-to-load-reference-a-file-as-a-file-instance-from-the-classpath – 2010-12-05 22:06:09

ответ

22

Вы можете использовать

InputStream in = 
    getClass().getResourceAsStream("/Utils/CEP/Ciades/" + estado + ".txt"); 
Reader fr = new InputStreamReader(in, "utf-8"); 

Несколько sidenotes: не использовать заглавные буквы в именах пакетов; используйте английские имена ваших переменных. Это общепринятые практики и конвенции.

0

Для полной переносимости, рассмотреть возможность использования File.separator вместо слэша, но да getResourceAsStream должен работать. Имейте в виду, что если вы работаете в eclipse, ваши файлы классов, вероятно, будут в bin по отношению к вашему рабочему каталогу, поэтому, если он находится только в папке вашего проекта, то, как у вас есть, он должен работать, но не getResourceAsStream. В качестве альтернативы, если ресурс, к которому вы хотите получить доступ, находится в исходной папке, он будет скопирован в bin всякий раз, когда вы очищаете свой проект, так что getResourceAsStream будет работать.

10

Это может быть немного поздно, но это может помочь многим другим. Эти способы доступа ресурсы, имеющиеся в проекте

Получение ресурсов формируют пакет по умолчанию

// Getting Resource as file object 
File f = new File(getClass().getResource("/excludedir.properties").getFile()); 

// Getting resource as stream object 
InputStream in = getClass().getResourceAsStream("/excludedir.properties"); 

Получение ресурсов из конкретных пакетов

// Getting Resource as file object 
File f = new File(getClass().getResource("/com/vivek/core/excludedir.properties").getFile()); 

// Getting resource as stream object 
InputStream in = getClass().getResourceAsStream("/com/vivek/core/excludedir.properties"); 

Примечание: GetClass () - это нестатическая функция, которую нельзя назвать формой статического контекста. Если вы хотите позвонить из статического контекста, используйте

YourClassName.class.getResource("/com/vivek/core/excludedir.properties").getFile() 

Надеюсь, это поможет. Ура !!

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