gpt4 book ai didi

java - 写入多个文件时文件为空

转载 作者:行者123 更新时间:2023-11-30 02:49:06 26 4
gpt4 key购买 nike

我试图在修改一个小点后读取一个文件并写入多个文件。

我的代码在写入第一个文件时有效,但其他文件是空文件。 :(

我认为在使用 bufferedwriterfilewriter 时存在问题,但无法找到问题所在,尽管我遵循了使用 flush 的建议 来自 stackoverflow。

我的代码有什么问题?

        FileReader fr = new FileReader(FileDir);
BufferedReader br = new BufferedReader(fr);
for (String mc: matchedContents){
FileWriter fw = new FileWriter(saveFileDir+String.valueOf(matchedContents.indexOf(mc)+1)+".xml", false);
BufferedWriter bw = new BufferedWriter(fw);
while ((s = br.readLine())!=null){
// check if s has matched contents
if (s.contains(mc)){
String replacedString="";
if (mc.contains("NV"))
replacedString = s.replace(mc, "NV("+anyItem(edgeNames)+")");
else if (mc.contains("AW"))
replacedString = s.replace(mc, "AW("+anyItem(edgeNames)+")");
bw.write(replacedString);
bw.newLine();
}
else {
bw.write(s);
bw.newLine();
}
}
System.out.println(mc+" end");
bw.flush();
bw.close();
fw.close();
}
br.close();
fr.close();

最佳答案

这是因为在第一个文件之后,您的 bufferedReader 就结束了。要再次写入,您需要将文件重新加载到 bufferedReader。因此,您需要做的就是在 for 循环内创建 bufferedReaderFileReader

    for (String mc: matchedContents){
FileReader fr = new FileReader(FileDir);
BufferedReader br = new BufferedReader(fr);
FileWriter fw = new FileWriter(saveFileDir+String.valueOf(matchedContents.indexOf(mc)+1)+".xml", false);
BufferedWriter bw = new BufferedWriter(fw);
while ((s = br.readLine())!=null){
// check if s has matched contents
if (s.contains(mc)){
String replacedString="";
if (mc.contains("NV"))
replacedString = s.replace(mc, "NV("+anyItem(edgeNames)+")");
else if (mc.contains("AW"))
replacedString = s.replace(mc, "AW("+anyItem(edgeNames)+")");
bw.write(replacedString);
bw.newLine();
}
else {
bw.write(s);
bw.newLine();
}
}
System.out.println(mc+" end");
bw.flush();
bw.close();
fw.close();
br.close();
}

fr.close();

关于java - 写入多个文件时文件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39263609/

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