zoukankan      html  css  js  c++  java
  • 当FileWriter没有flush的时候,不写入文件

    我要实现将写在Console上的内容保存在一个文件里,就是控制台记录器

    先看这个

    public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            String text = s.nextLine();
            Class clazz;
            try {
                clazz = Class.forName("com.mingrisoft.RecordConsole");
                FileWriter f = new FileWriter("E:\"+clazz.getSimpleName()+".txt");
                f.write(text);
                System.out.println("成功");
                
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }catch (IOException e) {
                e.printStackTrace();
            }
            
            
            
        }

    已走到"成功",而文件是空的

    当我加上fileWriter.flush()后

    public static void main(String[] args) {
            Scanner s = new Scanner(System.in);
            String text = s.nextLine();
            Class clazz;
            try {
                clazz = Class.forName("com.mingrisoft.RecordConsole");
                FileWriter f = new FileWriter("E:\"+clazz.getSimpleName()+".txt");
                f.write(text);
                System.out.println("成功");
                f.flush();
            } catch (ClassNotFoundException e1) {
                e1.printStackTrace();
            }catch (IOException e) {
                e.printStackTrace();
            }
            
            
            
        }

    说明flush()很重要

    关于flush,如果此流已保存缓冲区中各种write()方法的任何字符,则立即将它们写入预期目标,如果该目标是另一个字符或字节流则刷新,这就是为什么文件内容不是添加,而是只有一条最新运行的。

    close()前会自动执行flush()

    写上close()也很重要

  • 相关阅读:
    git连接远程GitHub仓库详细总结 for HTTPS协议
    软工课程总结&小黄衫获奖感言
    Yum项目上线实战(网站运维)
    MySQL基础
    Shell基础
    Linux网络基础
    Linux的权限管理操作
    linux自有服务(2)
    Linux自有服务
    Linux基本指令
  • 原文地址:https://www.cnblogs.com/lonely-buffoon/p/5576119.html
Copyright © 2011-2022 走看看