Как записать любой тип файла (например, текстовый файл) в папку ресурсов с файлом config.property, но без использования файла абсолютного пути в Java
Как написать или прочитать любой тип файла (например, .txt
файл) в папку ресурсов с config.property
файл, но без использования файла абсолютного пути.
Я попытался решить это, как показано ниже:
ClassLoader classLoader = Setting.class.getClassLoader();
Setting setting = new Setting();
try (InputStream resourceAsStream = classLoader.getResourceAsStream("config.properties")) {
setting.load(resourceAsStream);
}
String readFileName = setting.getValue("pathSource.txt");
String writeFileName = setting.getValue("outPutPathSourceFile.txt");
String s = System.getProperty("line.separator");
File readFile = new File("./src/main/resources" + File.separator + "pathSource.txt");
File writeFile = new File("./src/main/resources" + File.separator + "outPutPathSourceFile.txt");
Однако я не хочу использовать ./src/main/resources
префикс.
2 ответа
Ресурсы (файлы на пути к классам, возможно, внутри jar) могут быть прочитаны, но не предназначены для записи. Вы можете использовать их в качестве шаблона для создания исходной копии в файловой системе. - Joop Eggen
Если ваш файл находится в resources
Вы можете получить к нему доступ, как:
Файл file = новый файл (classLoader.getResource(fileName).getFile());
если вы используете Spring, вы можете использовать ResourceUtils.getFile ():
Файл file = ResourceUtils.getFile("classpath:fileName")
ОБНОВИТЬ:
Если я правильно понимаю, вы хотите прочитать файл, который находится под вашим src/main/resources
без использования относительного пути /src/main/resources
,
Я создал небольшое демо:
public class ReadResourceFile {
public static void main(String[] args) throws IOException {
String fileName = "webAutomationConfig.xml";
ClassLoader classLoader = ReadResourceFile.class.getClassLoader();
File file = new File(classLoader.getResource(fileName).getFile());
System.out.println("File exists: " + file.exists());
String content = new String(Files.readAllBytes(file.toPath()));
System.out.println(content);
}
}
Выход:
File exists: true
<?xml version="1.0" encoding="utf-8"?>
<config>
<baseUrl>https://www.gmail.com</baseUrl>
</config>
Структура проекта: