Java程序只写最后一行?

标签 java writer

我的问题是,对于阅读器,作者仅输出文件最后一行的内容,我不确定为什么据我所知我没有意外关闭它或任何类似的错误。这是我为作者使用的代码

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/

相关文章:

java - 读取器返回值63?

java - iText:带有图像的单元格不适用 Rowspan

java - 如何使用 Java 记录断言 hasProperty?

java - new PrintWriter(new BufferedWriter(new FileWriter ("output.txt", true))) 不打印

c - 脚本 bash 写入 fifo 并从中读取 c 程序

java - Spring 批处理 : Writing data to multiple files with dynamic File Name

java - Play框架2.7.2迁移,BodyPrasers.parse NoClassDefFoundError

java - 欧拉投影最小倍数

java - 如何正确构建两个类之间的 hibernate 关系

java - BufferedWriter 不写入所有信息