黑马程序员技术交流社区

标题: 谁能帮我把java输入输出流的定义再梳理一下!!!! [打印本页]

作者: 邵春雨    时间: 2014-4-9 11:08
标题: 谁能帮我把java输入输出流的定义再梳理一下!!!!
谁能帮我把java输入输出流的定义再梳理一下!!!!
作者: 一世英明    时间: 2014-4-9 11:18
首先要记住  流的基类:  按流向区分:  输出流   OutputStream   和   Writer  作为 基类                   输入流   InputStream     和  Reader  作为 基类; 按照 处理 数据单元划分:             字节流     和      字符流  字节流   :  字节输入流InputStream 基类   和  字节输出流 OutputStream 基类; 字符流   :  字符输入流 Reader 作为基类   和   字符输入流 Writer 作为基类;  这4个基类 都是 抽象类不能实例化!!!
作者: demown    时间: 2014-4-9 11:24
本帖最后由 demown 于 2014-4-9 11:32 编辑

        流的概念:流是一个很形象的概念,当程序需要读取数据的时候,就会开启一个通向数据源的流,这个数据源可以是文件,内存,或是网络连接。类似的,当程序需要写入数据的时候,就会开启一个通向目的地的流。这时候你就可以想象数据好像在这其中“流”动一样。
        流的分类:
        按数据方向分:输入流和输出流。
        输入流:InputStream/Reader
        输出流:OutputStream/Writer
        按数据类型分:字节流和字符流。
        字节流:InputStream/OutputStream
        字符流:Reader/Writer
        下图是常用的IO流:
       关于字节流和字符流的区别
        1、字节流读取的时候,读到一个字节就返回一个字节。
        字符流使用了字节流读到一个或多个字节(中文对应的字节是两个,UTF-8码表中是三个)时,先去查指定的编码表,将查到的字符返回。
        2、字节流可以处理所有类型数据,如图片,mp3等。
        字符流只能处理字符数据。
        3、字节流输入流都是以InputStream结尾,字节流输出流都是以OutputStream结尾。在InputStream或者OutputStream前面代表这个流的作用。
        字符流输入流都是以Reader结尾,字符流输出流都是以Writer结尾,相同与字节流前面也是代表这个流的作用。
        实际上字节流在操作的时候本身是不会用到缓冲区的,是文件本身的直接操作的,但是字符流在操作的时候下后是会用到缓冲区的,是通过缓冲区来操作文件的。
        使用字节流好还是字符流好呢?
        答案是字节流。首先因为硬盘上的所有文件都是以字节的形式进行传输或者保存的,包括图片等内容。但是字符只是在内存中才会形成的,所以在开发中,字节流使用广泛。
        总结:只要是处理纯文本数据,就要优先考虑使用字符流。除此之外都使用字节流。

2012031413373126.jpg (79.01 KB, 下载次数: 0)

2012031413373126.jpg





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2