Выбор файла в другом каталоге для bufferedReader - PullRequest
1 голос
/ 13 марта 2012

У меня есть файл инициализации (initialize.java), который извлекает данные из файла fileInput.txt с использованием fileInputStream, но оба они находятся в разных каталогах.

Project/library/initialize.java
Project/resources/text/fileInput.txt

мой код в initialize.java:

FileInputStream fstream = new FileInputStream("/resources/text/fileInput.txt");

Но файл не может быть прочитан. Я также попробовал

FileInputStream fstream = new FileInputStream("./resources/text/fileInput.txt");

Но это тоже не сработало.

Как получить доступ к txt-файлу и в чем разница между использованием "./resources" и "/ resources"?

Спасибо, что прочитали это.

Ответы [ 4 ]

5 голосов
/ 13 марта 2012

Разница огромна. В / / путь, начинающийся с /, начинается с корневого каталога. Путь, начинающийся с ./ или без, начиная с текущего каталога приложения. Позвоните

System.out.println(new File("."). getAbsolutePath()) чтобы проверить, где вы находитесь?

2 голосов
/ 13 марта 2012

"./resources/text/fileInput.txt" или "resources/text/fileInput.txt" работ, но "/resources/text/fileInput.txt" нет.

Примечание. Это допустимо, если папка с именем «resources» находится в корневом каталоге вашего проекта.

2 голосов
/ 13 марта 2012

FileInputStream fstream = new FileInputStream ("resources / text / fileInput.txt");

Пробовал это?

1 голос
/ 13 марта 2012

Как показывают другие ответы, путь, который вы передаете FileInputStream, зависит от ОС, а также от того, является ли путь относительным или абсолютным.Другой способ чтения файла - использовать Class.getResourceAsStream().например,

InputStream is = this.getClass (). getResourceAsStream ("/ resources / text / fileInput.txt")

Чтобы вышеперечисленное работало, вам необходимоиметь родительскую папку /resources в пути к классам.Для получения дополнительной информации о том, как работает getResourceAsStream, см. SO вопрос

...