java - 以编程方式在java中的资源/源文件夹中创建文件?

标签 java file resources copy

我有两个资源文件夹。

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-classestarget/classes 中。

关于java - 以编程方式在java中的资源/源文件夹中创建文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8513729/

相关文章:

jsf-2 - background-image: url ("") 在 CSS h:outputStylesheet 没有加载

java - 有什么简单的方法可以摆脱 Java 阻塞?

windows - 删除 Windows 中除 2 个最新文件夹之外的所有文件夹

xml泄漏内存中的Android位图?

javascript - 如何将从客户端浏览器抓取的数据保存到用户文件中?使用 Electron ?

c++ - 处理记录最后 1000 个事件的文件操作的最佳方法

Android OnClickListener - 识别一个按钮

java - 使用泛型的类调用了错误版本的方法(父类(super class)而不是子类)?

java - Spring,通过JNDI配置具有远程JBoss服务器的DataSource

java.lang.NullPointerException 和 java.net.SocketException