我的问题是,对于阅读器,作者仅输出文件最后一行的内容,我不确定为什么据我所知我没有意外关闭它或任何类似的错误。这是我为作者使用的代码
private static void processhtml(String UserFile) throws FileNotFoundException {
Scanner s = new Scanner(new BufferedReader(
new FileReader(UserFile))).useDelimiter("\\s*:\\s*|\\s*\\n\\s*");
//splits the file at colons
int count=0;
String line="";
String[] words=new String[40];
try{
String fileName="test"+count+".html";
PrintWriter writer = new PrintWriter(fileName, "UTF-8");
while (s.hasNext()) {
line =s.nextLine();
words = line.split("\\s*:\\s*");
for(int i=0;i<words.length;i++){
writer.println(words[i]);
}
writer.close();
writer.flush();
}
}catch(Exception e){
e.printStackTrace();
}
}
最佳答案
看起来您是在循环外创建 Writer,然后从循环内关闭它。您确定这只是您收到的最后一行吗?我的猜测是你只得到第一行。
看起来这需要移到下一个大括号之后:
writer.close();
writer.flush();
而且您可能应该切换顺序,因为如果流已经关闭,flush()
将不会执行任何操作(尽管 close()
经常调用 flush ()
无论如何)。
关于Java程序只写最后一行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28015209/