gpt4 book ai didi

java - 写入 ClassPath 上的数据文件不会反射(reflect)在项目中?

转载 作者:行者123 更新时间:2023-11-30 04:27:17 25 4
gpt4 key购买 nike

我的项目结构大致如下: /src/main/java 主程序.java /src/main/资源 数据.txt

现在,在 Main.java 中,我有类似的内容:

ClassLoader classLoader = new TestMain().getClass().getClassLoader();
String url = classLoader.getResource("data.txt").toString();
File file =new File(url.split(":")[1]);

//check if file exists, and reads current content:
System.out.println("File exists: " + file.exists());
System.out.println(IOUtils.toString(new FileInputStream(file)));

//Now write some more data to this file:
FileWriter fileWritter = new FileWriter(file,true);
BufferedWriter bufferWritter = new BufferedWriter(fileWritter);
bufferWritter.write("some more text");
bufferWritter.close();

现在上面的代码运行正常...并且,在每次迭代中,当我们读取文件时,我们可以看到事实上,额外的文本被附加到文件中。

但是:当我查看/src/main/resource 中的文件时,我看不到看到任何更改。更重要的是,如果我更改/更新此文件,那么以前的所有修改都会被删除。

因此,我的问题是:如果我想将一个文件存储在类路径上,例如 data.txt,并且以一种我希望对该文件进行持续更改的方式,我如何组织我的代码库执行此操作,和/或我需要在代码中进行哪些更改才能完成此操作?

最佳答案

我怀疑您会发现数据实际上在 bin 目录(或您将输出设置到的任何位置)中发生了更改。

我希望构建过程能够编译源代码并将资源复制到其他目录,然后从那里运行它。不要只是打印出文件是否存在,而是打印出文件本身,我怀疑您会发现它不在 src 中。

请注意,您当前的方法很脆弱,因为如果资源位于 jar 文件中(例如),则它不可写。通常,类路径上的资源最好被视为只读。

关于java - 写入 ClassPath 上的数据文件不会反射(reflect)在项目中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15546095/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com