Я пытаюсь прочитать текстовый файл в определенном пакете, но он возвращает, что не может быть найден. Я могу прочитать его, вставив абсолютный путь, но я хочу прочитать его, не вставляя абсолютный путь.
String texto = "Utils/CEP/Cidades/" + estado + ".txt";
FileReader fr = new FileReader(texto);
BufferedReader in = new BufferedReader(fr);
Как мне поступить?
Спасибо
Что вы имеете в виду, в конкретном пакете? Какой пакет? skaffman 06.12.2010
Это похоже на дубликат следующего вопроса: stackoverflow.com/questions/4359876/ Jiri Patera 06.12.2010
InputStream in =
getClass().getResourceAsStream("/Utils/CEP/Ciades/" + estado + ".txt");
Reader fr = new InputStreamReader(in, "utf-8");
Несколько замечаний: не используйте заглавные буквы в именах пакетов; используйте английские имена ваших переменных. Это общепринятые практики и условности.
Ответ 2 · рейтинг 16 · Vivek
Это может быть немного поздно, но это может помочь многим другим. Это способы доступа к ресурсам, доступным в проекте.
Получение ресурсов из пакета по умолчанию
// 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() - это нестатическая функция, которую нельзя вызвать из статического контекста. Если вы хотите звонить из статического контекста, используйте
Для полной переносимости рассмотрите возможность использования File.separator вместо косой черты, но да, getResourceAsStream должен работать. Имейте в виду, что если вы работаете в eclipse, ваши файлы классов, вероятно, будут в корзине по отношению к вашему рабочему каталогу, поэтому, если они находятся только в папке вашего проекта, то, как вы это делаете, должно работать, но не getResourceAsStream. В качестве альтернативы, если ресурс, к которому вы хотите получить доступ, находится в исходной папке, он будет скопирован в корзину всякий раз, когда вы очищаете свой проект, поэтому getResourceAsStream будет работать.