• java写文件时,输出不完整的原因以及解决方法close()或flush()


    在java的IO体系中,写文件通常会用到下面语句

    BufferedWriter bw=new BufferedWriter(new FileWriter("sql语句.txt"));

    用到这个的时候一定不能忘了他的伴侣代码。。

    bw.close();

    或者

    bw.flush();


    实际上,FileWriter在写文件时,会把内容存储到一块缓冲区中,当缓冲区满后,才会把缓冲区中的内容写入文件,内容再继续存到缓冲区,如此反复,而flush()会将内存中的内容强制写到文件中,即使内存没满。这就是为什么最后要调用一次fileWriter.close(),close()方法里面调用了flush(),这样就可以了。否则就会最后有少部分的内容缺失。特别是写小文件的时候,会出现文件空白,没有内容。
    这个问题很常见,值得注意。

    重源代码中可以看出,flush()中自动调用了close()

        public void close() throws IOException {
            try {
              flush();
            } catch (IOException ignored) {
            }
            out.close();
        }
    

      

  • 相关阅读:
    python_linux系统相关配置
    python_字典dict相关操作
    python_传参
    mapreduce 学习笔记
    linux 常用命令
    C++ stringstream介绍,使用方法与例子
    C++/C++11中std::numeric_limits的使用
    C++中string erase函数的使用
    C++中accumulate的用法
    malloc的用法和意义
  • 原文地址:https://www.cnblogs.com/langren1992/p/4722607.html
Copyright © 2020-2023  润新知