[英]files are empty when writing multiple files
我試圖在修改一點后讀取一個文件並寫入多個文件。
我的代碼在寫入第一個文件時有效,但其他文件為空文件。 :(
我認為當我使用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
。 因此,您需要做的是在for循環內創建bufferedReader
和FileReader
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代碼
Java讀取單個文件並寫出多個文件
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.