2012-03-13 3 views
1

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

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»?

Спасибо за это.

+0

Спасибо за помощь всем. Я понял, что это была моя большая ошибка, но, по крайней мере, я узнал «./» Справочный материал :) – puissant

ответ

5

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

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

+0

Глупый я .. Я сделал абсолютный путь и узнал, что это был проект/src/library, и мне пришлось сделать " новый FileInputStream («src/resources/...») спасибо! – puissant

+1

Возможно, проблема в том, что ресурсы - это ваша корневая папка в ресурсах. Поэтому попробуйте [InputStream in = ClassLoader.getResourceAsStream ("/ text/fileInput.txt"). ] (http://docs.oracle.com/javase/6/docs/api/java/lang/ClassLoader.html#getResourceAsStream (java.lang.String)) или 'InputStream in = ClassLoader.getResourceAsStream (" text/fileInput .txt ")', я никогда не знал :). Теперь корень - это ваш корневой каталог. –

2

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

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

2

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

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

1

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

InputStream является = this.getClass(). GetResourceAsStream ("/ ресурсы/текст/fileInput.txt")

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

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