Java как указать путь к файлу из resources
Перейти к содержимому

Java как указать путь к файлу из resources

  • автор:

Чтение ресурсных файлов

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

Например, нам нужно прочитать файл test.txt. Положим его в папку resources вашего проекта (она есть и в maven, и в gradle). Важно положить именно в ту resources, которая относится к самому приложению, а не к тестам, иначе вы не сможете обратиться к файлу.

public class ResourceReader <

public static void main(String[] args) throws Exception var example = new ResourceReader();
var content = example.readTextResource( «test.txt» );
System.out.println(content);
>

public String readTextResource(String filename) throws Exception var uri = getClass().getResource(String.format( «/%s» , filename)).toURI();
return Files.readString(Paths.get(uri));
>
>

Доступ к ресурсам мы получаем через метод getResource(), который имеется у объекта Class. Но доступ к классу из статичного контекста метода main() получить нельзя, поэтому мы сначала создаём экземпляр класса, а затем внутри него уже обращаемся к ресурсу. Обратите внимание, что имя ресурса начинается со слеша. Путь до ресурса указывается от корня папки resources. Для чтения содержимого файла целиком в строку используем метод Files.readString(), появившийся в Java 11. Если у вас более ранняя версия Java, то данный метод будет недоступен. В случае, если файл будет очень большим, также лучше данный метод не использовать, а читать файл с помощью буферизованного потока.

То же самое на kotlin:

fun main() <
val example = ResourceReader()
val content = example.readTextResource( «test.txt» )
println(content)
>

class ResourceReader fun readTextResource(filename: String): String val uri = this .javaClass.getResource( «/$filename» ).toURI()
return Files.readString(Paths.get(uri))
>
>

Ожидаемо, что код на kotlin более компактный.

Как правильно прописывать пути к ресурсам в Java?

Доброго всем дня. В данный момент изучаю java. Разработку веду в intellij idea.
Взялся реализовать простой справочник используя javafx. БД sqlite, для подключения maven подтягивает необходимые библиотеки. Все работает пока запускаешь из idea и перестает работать после сборки в jar. В процессе изучения понял что не тем собирал и с путями у меня полная неразбериха.
Потому вопрос — как правильно прописать пути к папке resources?
В idea когда создаешь maven project имеем следующую структуру

src --main ----java ------Main ----resources ------db --------test.db ------test.fxml --test pom.xml

Как правильно в Main прописать путь к test.fxml и к test.db?
На данный момент fxml (перенес его в корень к Main) получаю через

Parent root = FXMLLoader.load(getClass().getResource("main.fxml"));

Но по мне так не верно

  • Вопрос задан более трёх лет назад
  • 3973 просмотра

Как получить полный путь к файлу из resource директории в папке test?

Нужно протестировать корректность конвертирования Json. Для этого в директории test создал директорию resources, куда положил файл расширения .json .

В тесте ссылаюсь на него вот так:

class RawMediaPreviewResponseConverterTest < val jsonPath = "src/test/resources/RawMediaPreviewResponse.json" val gson = Gson() @Test fun `media previews response converter should convert images`()< val rawMediaPreviewResponse = gson.fromJson(FileReader(jsonPath),RawMediaPreviewResponse::class.java) . >>

Это хардкод. Если поменять структуру расположения файла, то всё сломается.
Можно ли как то по-другому получить путь на файл .json?

  • Вопрос задан более двух лет назад
  • 185 просмотров

Как указать путь к файлу в java

Чтобы указать путь к файлу в Java , можно использовать класс java.io.File . Существует несколько способов задания пути:

File file = new File("/path/to/file.txt"); // Здесь /path/to/file.txt - абсолютный путь к файлу. 

Относительный путь от текущего каталога:

File file = new File("file.txt"); // Здесь file.txt - файл, расположенный в текущем каталоге. 

Относительный путь от корня проекта:

File file = new File("src/main/resources/file.txt"); 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *