2016-03-19 7 views
0

Я пытаюсь прочитать файл за пределами моего текущего рабочего каталога с использованием классов File и URL на Java. Я знаю, что текущий рабочий каталог «представлен» по умолчанию ..Как получить абсолютный путь к файлам за пределами текущего рабочего каталога [java]

Предполагая, что мой класс Java находится под /folders/Desktop/MyClass.java, если я хочу, чтобы прочитать файл file1.txt в /folders/Desktop/file1.txt, я могу сделать следующее:

URL url = getClass().getResource("./file1.txt"); /* or "./anotherFolder/../file1.txt", or simply "file1.txt"*/ 
File f = new File(url.getPath()); 

и все работает, как ожидалось.

Но что мне делать, чтобы прочитать файл, который находится внутри текущего рабочего каталога и который не находится в его подкаталоге? Например, если путь файла равен /folders/file1.txt? Я искал везде, но ничего не могу найти. Я пробовал ../file1.txt, ./../file1.txt и другие, но ничего не работает. Возможно, я что-то пропустил, или, может быть, я не искал в нужных местах.

+0

что случилось с новым FIle ("/ folders/file1.txt")? – Turo

+0

Нет ничего плохого в этой инструкции, она работает в моем случае. Проблема возникает, когда я хочу читать файлы, которые не находятся в подкаталогах текущего рабочего каталога. В частности, java.lang.NullPointerException бросается, когда я пытаюсь создать экземпляр класса File. – Process0

+0

Я имею в виду не использовать ресурс, просто новый файл (имя файла). Файл может быть в любом месте, пока путь правильный. Как он может бросать NPE, когда имя файла не равно нулю? – Turo

ответ

0

Если вы не указали путь к имени файла, тогда java выполняет поиск в каталоге, в котором работает приложение.

Пример:

Это будет печатать true, если файл находится в главной папке проекта ...

public static void main(String[] args) { 
     final File foo = new File("asd.txt"); 
     System.out.println(foo.exists()); 
    } 

РЕДАКТИРОВАТЬ:

, если файл, если не в этой папке, то вы можете перейти вверх в структуру папок с помощью операторов «» или «../» ... или пойти глубже в папки File("/src/asd.txt"), например, файл находится внутри папки src. .

enter image description here

+0

Да, я знаю. На самом деле, у меня нет какой-либо проблемы с файлами в текущем рабочем каталоге и его подкаталогах. Нет никакого проекта !!! – Process0

0

Если вы хотите получить доступ к файлу, который не ниже текущей рабочей директории вы должны либо пройти через файловую систему программны или вы получите абсолютный путь по пользовательскому вводу и построить java.io.File объект с new File(absolutePathAsString) , Вы также можете рассмотреть возможность использования нового API java.nio.file.