zoukankan      html  css  js  c++  java
  • java中字节流与字符流的区别

    字节流和字符流使用是非常相似的,那么除了操作代码的不同之外,还有哪些不同呢?

    字节流在操作的时候本身是不会用到缓冲区(内存)的,是与文件本身直接操作的,而字符流在操作的时候是使用到缓冲区的。

    字节流在操作文件时,即使不关闭资源(close方法),文件也能输出,但是如果字符流不使用close方法的话,则不会输出任何内容,说明字符流用的是缓冲区,并且可以使用flush方法强制进行刷新缓冲区,这时才能在不close的情况下输出内容

    那开发中究竟用字节流好还是用字符流好呢?

    在所有的硬盘上保存文件或进行传输的时候都是以字节的方法进行的,包括图片也是按字节完成,而字符是只有在内存中才会形成的,所以使用字节的操作是最多的。

    如果要java程序实现一个拷贝功能,应该选用字节流进行操作(可能拷贝的是图片),并且采用边读边写的方式(节省内存)。

    以stream结尾都是字节流,reader和writer结尾都是字符流。

    InputStream是所有字节输入流的父类,OutputStream是所有字节输出流的父类。

    Reader是字符输入流的父类,Writer是字符输出流的父类。

    字节流:

    文件流:FileOutputStream和FileInputStream

    缓冲流:BufferedOutputStream和BufferedInputStream

    对象流:ObjectOutputStream和ObjectInputStream

    字符流:

    转换流:InputStreamReader和OutputStreamWriter

    缓冲字符流:PrintWriter和BufferedReader

    区别:

      读写的时候一个是按字节读写,一个是按字符。

      在读写文件需要对内容按行处理,比如比较特定字符,处理某一行数据的时候一般会选择字符流。

      只是读写文件,和文件内容无关的,一般选择字节流。

  • 相关阅读:
    201521123093 java 第二周学习总结
    201521123093 java 第一周总结
    Word 2010怎么自动添加文献引用
    动态链接库(dll)文件的动态调用(使用动态链接库,解析Wis文件--测井数据文件的一种)
    open inventor 学习笔记
    井眼轨迹的三次样条插值 (vs + QT + coin3d)
    VS2010 + QT 5 +open inventor 环境配置
    我的第一个项目(人力资源管理之报表管理)
    B-tree 和 B+tree
    mysql count(*)与count(1)的区别
  • 原文地址:https://www.cnblogs.com/ygunoil/p/13500836.html
Copyright © 2011-2022 走看看