Подтвердить что ты не робот

Получить файл из папки проекта java

Я хочу получить файл из папки проекта, используя "класс файла", как я могу это сделать?

File file=new File("x1.txt");
4b9b3361

Ответ 1

Ну, есть много разных способов получить файл на Java, но это общий смысл.

Не забывайте, что вам нужно обернуть это внутри try {} catch (Exception e){}, по крайней мере, потому что File является частью java.io, что означает, что у него должен быть блок try-catch.

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

т

src/
    main.java
    x.txt

В этом примере использование File f = new File("x.txt"); внутри main.java приведет к исключению, не найденному в файле.

Однако использование File f = new File("src/x.txt"); будет работать.

Надеюсь, что это поможет!

Ответ 2

Это похоже на то, что файл встроен в ваше приложение.

Вы должны использовать getClass().getResource("/path/to/your/resource.txt"), который возвращает URL или getClass().getResourceAsStream("/path/to/your/resource.txt");

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

Ответ 3

Если вы не указали какой-либо путь и не поместили только файл (так же, как вы это делали), каталог по умолчанию всегда является одним из ваших проектов (он не находится внутри папки "src" ). Он находится только внутри папки вашего проект).

Ответ 4

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

Чтобы узнать, какова структура каталога времени выполнения, проверьте каталог {root project dir}/target/classes. Этот каталог доступен через "." URL.

Исходя из ответа user4284592, у меня сработало следующее:

ClassLoader cl = getClass().getClassLoader();
File file = new File(cl.getResource("./docs/doc.pdf").getFile());

со следующей структурой каталогов:

{root dir}/target/classes/docs/doc.pdf

Вот объяснение, чтобы вы не просто слепо копировали и вставляли мой код:

  • java.lang.ClassLoader - это объект, который отвечает за загрузку классов. Каждый объект Class содержит ссылку на ClassLoader, который его определил, и может извлечь его с помощью метода getClassLoader().
  • Метод getResource ClassLoader находит ресурс с заданным именем. Ресурс - это некоторые данные, которые могут быть доступны для кода класса способом, который не зависит от местоположения кода.

Ответ 5

Эти строки работали в моем случае,

ClassLoader classLoader = getClass().getClassLoader();
File fi = new File(classLoader.getResource("test.txt").getFile());

предоставлен файл test.txt внутри src

Ответ 6

в javaFx 8

javafx.scene.image.Image img = new javafx.scene.image.Image("/myPic.jpg", true);

URL url = new URL(img.impl_getUrl());

Ответ 7

Для файла application.yaml в test/resources

ll src/test/resources/
total 6
drwxrwx--- 1 root vboxsf 4096 Oct  6 12:23 ./
drwxrwx--- 1 root vboxsf    0 Sep 29 17:05 ../
-rwxrwx--- 1 root vboxsf  142 Sep 22 23:59 application.properties*
-rwxrwx--- 1 root vboxsf   78 Oct  6 12:23 application.yaml*
-rwxrwx--- 1 root vboxsf    0 Sep 22 17:31 db.properties*
-rwxrwx--- 1 root vboxsf  618 Sep 22 23:54 log4j2.json*

В тестовом контексте я могу получить файл с

String file = getClass().getClassLoader().getResource("application.yaml").getPath(); 

который фактически укажет на файл в test-classes

ll target/test-classes/
total 10
drwxrwx--- 1 root vboxsf 4096 Oct  6 18:49 ./
drwxrwx--- 1 root vboxsf 4096 Oct  6 18:32 ../
-rwxrwx--- 1 root vboxsf  142 Oct  6 17:35 application.properties*
-rwxrwx--- 1 root vboxsf   78 Oct  6 17:35 application.yaml*
drwxrwx--- 1 root vboxsf    0 Oct  6 18:50 com/
-rwxrwx--- 1 root vboxsf    0 Oct  6 17:35 db.properties*
-rwxrwx--- 1 root vboxsf  618 Oct  6 17:35 log4j2.json*

Ответ 8

Просто сделал быстрый поиск в Google и обнаружил, что

System.getProperty("user.dir");

возвращает текущий рабочий каталог как String. Поэтому, чтобы получить файл из этого, просто используйте

File projectDir = new File(System.getProperty("user.dir"));

Ответ 9

String path = System.getProperty("user.dir")+"/config.xml";
File f=new File(path);