美文网首页
android 日常(十八)

android 日常(十八)

作者: ncd | 来源:发表于2016-12-01 19:03 被阅读9次
  • Android加载通话记录流程分析

  • 对OutputStream类的flush()方法的误解
    最近使用java的FileOutputStream写文件,调用到了flush()方法。
    在Code Review时,同事指出没有调用flush()的必要。
    于是查看了FileInputStream类的源代码,发现flush()其实是继承于其父类OutputStream的。
    而OutputStream类的flush()却什么也没做,恍然大悟,真是“看源代码者得真相啊”。
    其实flush()是Flushable接口的方法,官方文档的对该方法的注释是“Flushes this output stream and forces any buffered output bytes to be written out.”。
    OutputStream方法实现了Flushable接口,而又什么也没做,真是让人一头雾水,于是就出现了我的误解。
    那么什么时候flush()才有效呢?
    答案是:当OutputStream是BufferedOutputStream时。
    当写文件需要flush()的效果时,需要

FileOutputStream fos = new FileOutputStream("c:\a.txt");
BufferedOutputStream bos = new BufferedOutputStream(fos);

也就是说,需要将FileOutputStream作为BufferedOutputStream构造函数的参数传入,然后对BufferedOutputStream进行写入操作,才能利用缓冲及flush()。
查看BufferedOutputStream的源代码,发现所谓的buffer其实就是一个byte[]。
BufferedOutputStream的每一次write其实是将内容写入byte[],当buffer容量到达上限时,会触发真正的磁盘写入。
而另一种触发磁盘写入的办法就是调用flush()了。

相关文章

  • android 日常(十八)

    Android加载通话记录流程分析 对OutputStream类的flush()方法的误解最近使用java的Fil...

  • 《日常》(十八)

    感到非常无力。 什么事都做不了。 你在屏幕的对面和我说你焦虑。 我在另一头连自己的事都没有好好解决。 你问我后不后...

  • 日常(十八)

    不知为什么,这些天的晚饭,老姚很不上心,都是一大盆炖菜加几小碟凉拌菜凑合一顿饭了事。饭菜准备的量挺足,若是论起品种...

  • ADB 常用命令

    ADB 即Android 调试桥(Android Debug Bridge),作为一个 Android 开发在日常...

  • View篇_04view绘制流程

    参考文章 : 深入理解Android之View的绘制流程 Android源码解析(十八)-->Activity布局...

  • Android Studio中mipmap和drawable文件

    日常疑问之——Android Studio中mipmap和drawable的区别 用了Android studio...

  • 深入理解 Android 消息机制

    原文转载:深入理解 Android 消息机制 深入理解Android消息机制 在日常的开发中,Android 的消...

  • 记录日常(十八)

    周末友人齐小聚,谈天说地恨晚遇。 周末接了一个哥们儿的电话,说是五六个年轻人聚聚,既是邻居朋友,又是曾经同学,过了...

  • 日常画展(十八)

    今天画了两张画 这张是点图,由于上次的皮卡丘没画,再加上这次的点图对象是喷x,于是我就打算把它两画在一起了...

  • Android Studio中的productFlavors指定

    Android Studio中指定了 productFlavors如下:productFlavors { /*日常...

网友评论

      本文标题:android 日常(十八)

      本文链接:https://www.haomeiwen.com/subject/bxffmttx.html