где Java ищет файлы в netbeans?И можно ли поменять каталог? - PullRequest
0 голосов
/ 14 мая 2018

Итак, у меня есть несколько текстовых файлов, которые я хочу поместить в следующую папку: src/test/resources/__files

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

Спасибо

Ответы [ 3 ]

0 голосов
/ 14 мая 2018

Похоже, вы работаете с инструментом сборки maven , с соглашениями src / main / java, src / main / resources и для модульных тестов src / test / java и src / test / resources.

И тогда файлы представляют собой не настоящую файловую систему File, а ресурсы, упакованные, возможно, в jar (как вы сказали): с учетом регистра, / разделитель пути и InputStream только для чтения.

Вы можете сохранить файл в качестве ресурса (в / src / main / resources / then) и использовать этот файл в качестве шаблона для реального файла в приложении System.getProperty("user.dir") (рабочий каталог) или System.getProperty("user.home") (домашний каталог).), см. Свойства системы .

InputStream in = .... .class.getResourceAsStream("___files/xyz.txt");

Или вы можете скопировать в maven из своего собственного местоположения в каталог назначения / дистрибутива.

0 голосов
/ 14 мая 2018

Я использую NetBeans в Windows, я пишу String url = "src\\test\\resources\\__files" Структура папок ProjFolder\src\test\resources\__files

0 голосов
/ 14 мая 2018

Поскольку вы уже размещаете файлы ресурсов в папке src/test/resources, Maven должен сделать их доступными в пути к классам во время выполнения.В этом случае они должны быть на пути к классам в вашей тестовой сборке.Вы можете попробовать следующий код:

String fileName = "somefile.txt";
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());

Сайт Mkyong хорошо объясняет, как работают ресурсы в Maven.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...