Java 写入多个文件时,文件为空
我试图在修改一个小点后读取一个文件并写入几个文件 我的代码在编写第一个文件时工作,但其他文件是空文件:( 我认为当我使用Java 写入多个文件时,文件为空,java,Java,我试图在修改一个小点后读取一个文件并写入几个文件 我的代码在编写第一个文件时工作,但其他文件是空文件:( 我认为当我使用bufferedwriter和filewriter时会出现问题,但是我没有找到问题所在,尽管我按照stackoverflow的建议使用flush 我的代码中有什么问题 FileReader fr = new FileReader(FileDir); BufferedReader br = new BufferedReader(fr);
bufferedwriter
和filewriter
时会出现问题,但是我没有找到问题所在,尽管我按照stackoverflow的建议使用flush
我的代码中有什么问题
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
。因此,需要做的是将bufferedReader
和FileReader
放入for循环中
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();
我会尝试逐行调试代码,并检查第二个、第三个等文件中到底写入了什么(可能文件写入还可以,但正在写入空字符串?) 同时检查:
尝试使用一种神奇的调试器。谢谢!!但是
FileReader fr=newfilereader(FileDir);
也应该在for循环中..或者,它不起作用。