我的资源文件夹中的文件不是用try with resources和bufferedwriter编写的,为什么?

4urapxun  于 2021-06-27  发布在  Java
关注(0)|答案(3)|浏览(336)

我有个档案 test.txt 在我的项目的resources文件夹中,我正在尝试为它编写一个字符串列表,每行一个(如果有关系的话,来自测试类)。
出于某种原因,尽管没有异常被抛出或捕捉,我尝试了很多事情,但我不能写它。例如:

Path p = Paths.get(ClassLoader.getSystemResource("test.txt").toURI());

try (BufferedWriter writer = Files.newBufferedWriter(p)) 
{
    for (String line : lines) writer.write(line);
} 

catch (IOException e) 
{
    e.printStackTrace();
}
``` `Files.write(p, lines)` 也不起作用。我很困惑,因为没有报告错误,但文件仍然是空的。我还确保路径被 `p.toFile().exists()` ,它确实会回来 `true` . 我错过了什么?
wbgh16ku

wbgh16ku1#

如果您使用的是maven,src/main/resources中的文件将被复制到输出文件夹target/classes/test.txt。打印您的文件路径并查看您正在使用的实际路径。

cngwdvgl

cngwdvgl2#

首先,将更改输出目录(编译资源目录)下的文件。你需要关闭writer

writer.close();
wgmfuz8q

wgmfuz8q3#

我猜你是在ide上运行的?
ide将构建项目,并将资源与编译的 .class 文件到输出目录。当修改这些资源时,复制的资源文件将被覆盖,而不是源资源文件-我假设您现在正在查看这些文件,并看到它们看起来仍然相同。而且,每次生成项目时,复制的资源文件可能会被覆盖。
提示:输出(打印)路径以检查实际修改的文件。

相关问题