Bezdepbonusu7Программирование: статьи и ответы

Вопрос

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

Автор вопроса: dextervipОтветов: 4

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

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

packagejavafiletext

Ответы

Ответ 1 · рейтинг 29 · Bozho

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

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() - это нестатическая функция, которую нельзя вызвать из статического контекста. Если вы хотите звонить из статического контекста, используйте

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

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

Ответ 3 · рейтинг 5 · Codemwnci

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

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

Ответ 4 · dspyz

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

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы