如何将文件保存到类路径 [已关闭]

2022-09-03 08:23:34

如何保存/加载位于我的类所在的文件?我之前没有到那个位置的物理路径,我想动态地找到那个文件。

我想加载一个XML文件并写入和读取它,但我不确定如何解决它。


答案 1

使用 ClassLoader#getResource()getResourceAsStream() 将它们作为类路径或从类路径中获取。URLInputStream

ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
InputStream input = classLoader.getResourceAsStream("com/example/file.ext");
// ...

或者,如果它与当前类位于同一包中,则还可以按如下方式获取它:

InputStream input = getClass().getResourceAsStream("file.ext");
// ...

拯救是一个不同的故事。如果文件位于 JAR 文件中,则此操作不起作用。如果可以确保文件已展开且可写,则 将 from 转换为 。URLgetResource()File

URL url = classLoader.getResource("com/example/file.ext");
File file = new File(url.toURI().getPath());
// ...

然后,您可以使用它构造一个FileOutputStream

相关问题:


答案 2

您可以尝试以下操作,前提是您的类是从文件系统加载的。

String basePathOfClass = getClass()
   .getProtectionDomain().getCodeSource().getLocation().getFile();

要获取该路径中的文件,您可以使用

File file = new File(basePathOfClass, "filename.ext");