深入解析FileInputStream和FileOutputStream

栏目:IO与序列化 作者:admin 日期:2015-08-05 评论:5 点击: 3,981 次

FileInputStream和FileOutputStream类属于字节类,可以操作任意类型的文件。在数据流的处理过程中,有两种情况。
(1)以单个字节的形式读写文件
(2)以数据块的形式读写文件
从JDK的源码中,我们可以看出来:
FileInputStream的读:

FileOutputStream的写:

FileInputStream和FileOutputStream最常用的地方也就是文件的复制过程。下面通过两个例子来说明一下:
例子一:单个字节的读写

例子二:数据块的读写

疑问:
上面列出了两个例子,到底哪个例子的效率更高一些呢?
也许这个问题很难回答,因为效率的比对很难实现。而且数据流的底层实现,我们也很难搞清楚。其实,撇开这个问题,我们还有更高效的读取方式,那就是下一篇文章要讲的BufferedInputStream和BufferedOutputStream。
需要注意的是:
创建FileInputStream实例对象时,指定的文件应当是存在和可读的。创建FileOutputStream实例对象时,如果指定的文件已经存在,这个文件中的原来内容将被覆盖清除。

声明: 本文由金丝燕网原创编译,转载请保留链接: 深入解析FileInputStream和FileOutputStream

深入解析FileInputStream和FileOutputStream:目前有5 条留言

  1. 板凳
    scliu12345:

    大哥,觉着你的有些东西不错,可以转载一下吗?会标明来源的。主要是想记录一下学习点。

    2016-01-21 下午9:12 [回复]
  2. 沙发
    梁五:

    请教一下,最后为什么要null != in才把流关掉?

    2015-11-18 上午11:52 [回复]
    • admin:

      其实和in != null是一样的。

      2015-11-18 下午12:56 [回复]
      • 梁五:

        …. :roll:
        我的意思是为什么不是直接关掉,而是要“不等于null”才把它关掉…

        2015-11-18 下午1:39 [回复]
      • 梁五:

        = =我好像明白了…因为我一开始觉得无论如何都不会“in == null”啊

        2015-11-18 下午1:42 [回复]

发表评论