Научитесь читать файл из classpath в Java. Файл может находиться в корне расположения classpath или в любом относительном подкаталоге.
1. Размещение файлов в Classpath
Путь к классам приложения обычно содержит следующие расположения:
- Корневой каталог проекта
- /источник/главный/ресурсы
- Любое расположение, файлы которого копируются в папку /classes после запуска сборки проекта.
Если файл находится внутри jar-файла, добавьте jar-файл в папку lib проекта или добавьте jar в classpath проекта.
Важно убедиться, что файл скопирован в конечный результат сборки проекта, т. е. файл jar/war или файл ear.
2. Чтение файлов из Classpath
Чтобы прочитать любой файл из classpath в классе, нам нужно получить ссылку на системный загрузчик классов для того класса, который пытается прочитать файл.
Системный загрузчик классов, очевидно, знает другие пути для приложения. Как только у нас есть ссылка на файл, мы можем использовать несколько способов для чтения файла.
импорт java.io.Файл;импорт java.io.IOException;импорт java.net.URL;публичный класс ReadFileFromClasspath{public static void main(String[] args) выдает исключение{//Чтобы избежать ссылки на нестатический метод внутри статического метода main()Экземпляр ReadFileFromClasspath = новый ReadFileFromClasspath();Файл file = instance.getFile("demo.txt");//проверить путь к файлуSystem.out.println(file.getPath());//Читать файлСписок строк = Files.readAllLines(file.toPath());System.out.println(строки);}частный Файл getFile(String fileName) выдает IOException{Загрузчик классов Загрузчик классов = getClass().getClassLoader();URL-ресурс = classLoader.getResource(fileName);если(ресурс == null) {throw new IllegalArgumentException("файл не найден!");} еще {вернуть новый Файл(resource.getFile());}}}
3. Полные и относительные пути
Имя файла можно задать двумя способами: в виде пути к корневому каталогу и полного пути.
- fileName.txt – ищет файл в корневом пути папки сборки(например, /bin, /build, /WEB-INF/classes и т. д.).
- com/howtodoinjava/io/demo.txt – представляет собой полный путь к файлу в каталоге сборки. В этом случае фактический файл находится в расположении <project_root>/bin/com/howtodoinjava/io/demo.txt.
Напишите мне ваши вопросы, связанные с чтением файла из classpath в Java.