我有两个资源文件夹。
src - 这是我的 .java 文件
资源 - 这是我在文件夹(包)中组织的资源文件(图像、.properties)。
有没有办法以编程方式在该资源文件夹中添加另一个 .properties 文件?
我试过这样的:
public static void savePropertiesToFile(Properties properties, File propertiesFile) throws IOException {
FileOutputStream out = new FileOutputStream(propertiesFile);
properties.store(out, null);
out.close();
}
在创建之前:
new File("/folderInResources/newProperties.properties");
但它会在文件系统上查找该路径。我怎样才能强制它在资源文件夹中查找?
编辑:让我说说它是关于什么的。我有一个 GUI 应用程序,我支持 2 种语言(资源文件夹中的 2 个 .properties 文件)。现在我添加了一个选项,用户可以轻松翻译应用程序,当他完成后,我将新的 .properties 保存在磁盘上的某个隐藏文件夹中,并从那里读取它。但我希望我可以将新的 .properties 文件(新语言)保存在当前语言(资源文件夹)旁边。我有一个静态消息类,它知道如何从磁盘和资源文件夹中的默认资源加载资源。但是如果用户在其他机器上使用这个 .jar 文件,他将不会有新语言,因为它们在那台计算机的磁盘上,而不是在 .jar 文件中。
最佳答案
Java 8 解决方案
Path source = Paths.get(this.getClass().getResource("/").getPath());
Path newFolder = Paths.get(source.toAbsolutePath() + "/newFolder/");
Files.createDirectories(newFolder);
这肯定会在资源文件夹中创建新文件夹。但您会在目标运行时中找到新文件夹。
这将是 ProjectName/target/test-classes/newFolder
。如果您在测试用例中运行此代码。否则它会在 target/classes
不要尝试在您的 src/resources
中寻找新文件夹。
它肯定会在 target/test-classes
或 target/classes
中。
关于java - 以编程方式在java中的资源/源文件夹中创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513729/