Чтение txt файла из определенного пакета Java

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

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

Как мне поступить?

Спасибо


person dextervip    schedule 05.12.2010    source источник
comment
Что вы имеете в виду, в конкретном пакете? Какой пакет?   -  person skaffman    schedule 06.12.2010
comment
Это похоже на дубликат следующего вопроса: stackoverflow.com/questions/4359876/   -  person Jiri Patera    schedule 06.12.2010


Ответы (4)


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

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

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

person Bozho    schedule 05.12.2010

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

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

// 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()

Надеюсь это поможет. Ваше здоровье!!

person Vivek    schedule 29.05.2014
comment
Это мне очень помогло. TX - person Ishimwe Aubain Consolateur; 08.03.2018

Если текстовый файл существует в той же структуре, что и ваши файлы классов, возможно, вам лучше подойдет использование getResourceAsStream.

http://download.oracle.com/javase/6/docs/api/java/lang/Class.html#getResourceAsStream(java.lang.String)

person Codemwnci    schedule 05.12.2010

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

person dspyz    schedule 06.12.2010