Чтение / запись файлов в папке проекта

Привет, мне было интересно, как получить доступ к файлам в папке проекта в java/maven, я думал об использовании src/main/resources, но мне сказали, что записывать файлы в этом каталоге - плохая идея, и это должно быть только используется в конфигурации для проекта, поэтому я создал новую папку без исходного кода, но мне было интересно, есть ли способ получить доступ к этому файлу в Java без указания абсолютного пути, так как мне нужно использовать его в другой среде. любая помощь или другие подходящие предложения были бы здесь благодарны. я буду писать в файлы во время выполнения.

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

я использую это для доступа к файлу:

private static final String ACTUAL_VALUES ="verification/actualCounterValues.csv";

где verification это папка, которую я создал в своем проекте

1 ответ

Решение

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

Первое, что вам, возможно, придется решить, это отделить ссылку на файл от вашего приложения - потому что если вы перемещаете свое приложение, оно должно адаптироваться к новой среде. Вы можете решить эту проблему, поместив абсолютную ссылку на файл в системную среду (которая доступна через System.getenv() метод). Другим способом может быть предоставление пути к файлу в качестве аргумента командной строки.

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

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

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

И если эти два экземпляра приложения будут обращаться к одному и тому же файлу, вы также должны знать о возможных трудностях параллелизма (особенно в файловой системе - см. Этот пост).

Другие вопросы по тегам