黑马程序员技术交流社区

标题: 马上要点招了,收集了部分IO流的资料 [打印本页]

作者: 徐方锐    时间: 2016-5-25 23:34
标题: 马上要点招了,收集了部分IO流的资料
IO流:
根据操作数据分为:字节流和字符流
        |-字节流的抽象基类:InputStream  OutputStream
        |-字符流的抽象基类:Reader  Writer

他们的子类都是以基类名作为后缀

根据流向分为:输入流和输出流


字符流:
字符流操作的都是文本文件,如果是别的类型的文件需要用字节流。

Reader
        |--BufferedReader :从字符输入流中读取文本,缓冲各个字符,
                                                从而实现字符、数组和行的高效读取
                        构造方法: BufferedReader(Reader out)

                        常用方法:
                                String readLine() 读取一个文本行 读取一个文本行。通过下列字符之一即可
                                        认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
                                       
                                        返回:包含该行内容的字符串,不包含任何行终止符,
                                        如果已到达流末尾,则返回 null
                                        注意:在配合write()方法把数据写入文件中时,要注意使用newLine() 方法

        |--InputStreamReader :是字节流通向字符流的桥梁
                        构造方法: InputStreamReader(InputStream in)
               
                |--FileReader :用于读取字符流。要读取原始字节流
                        常用方法:
                                int read() 读取单个字符。
                                int read(char[] cbuf)  将字符读入数组。
                                void close() 关闭该流并释放与之关联的所有资源,在IO流完后一定要调用该方法

Writer
        |--BufferedWriter :将文本写入字符输出流,缓冲各个字符,从而提供单个字符、
                                                数组和字符串的高效写入
                        构造方法: BufferedWriter(Writer out)

                        常用方法:
                                newLine() 方法,它使用平台自己的行分隔符概念,此概念由系统属
                                        性 line.separator 定义。并非所有平台都使用新行符 ('\n') 来终止各行。
                                        因此调用此方法来终止每个输出行要优于直接写入新行符。
        
        |--OutputStreamWriter :是字符流通向字节流的桥梁
                        构造方法:OutputStreamWriter(OutputStream out)

        
        |--FileWriter :用来写入字符文件的便捷类
                        常用方法:
                                 void write(char[] cbuf) 写入字符数组。
                                 void write(char[] cbuf, int off, int len) 写入字符数组的某一部分。
                                 void write(int c) 写入单个字符。
                                 void flush()刷新该流的缓冲。 在每次写完数据后要调用该方法刷新缓冲区
                                 void close() 闭此流,但要先刷新它。 在IO流完后一定要调用该方法


字节流:

常用的方法和字符流基本相同,但是要注意的是这个使用 byte[]接收缓冲数据。
        而字符流使用 char[]

InputStream
        |--FileInputStream 从文件系统中的某个文件中获得输入字节。哪些文件可用取决于主机环境。

        |--FilterInputStream 类本身只是简单地重写那些将所有请求传递给所包含
                                        输入流的 InputStream 的所有方法
                |--BufferedInputStream 为另一个输入流添加一些功能。提高程序效率
                        一般传 FileInputStream 对象,然后调用 InputStream 方法



OutputStream
        |--FileOutputStream

        |--FilterOutputStream 类本身只是简单地重写那些将所有请求传递给所包含
                                        输出流的 OutputStream 的所有方法
                |--BufferedOutputStream 该类实现缓冲的输出流。通过设置这种输出流,
                                        应用程序就可以将各个字节写入底层输出流中,
                                        而不必针对每次字节写入调用底层系统。提高程序效率
                        一般传 FileOutputStream 对象,然后调用 OutputStream 方法
流操作的规律:
最痛苦的就是流对象很多,不知道该用哪个

通过三个明确来完成。

1、明确源和目的
        源:输入流        InputStream Reader
        目的:输出流          OutputStream Writer
2、操作的数据是否纯文本
        是:字符流
        不是:字节流

3当体系明确后,再明确要使用哪个具体的对象
        通过设备来进行区分:
        源设备:内存,硬盘,键盘
        目的设备:内存,硬盘,控制台
作者: 罗勇    时间: 2016-5-25 23:36
加油加油,一起努力
作者: sasyun    时间: 2016-5-26 00:14
感谢分享                    
作者: satana    时间: 2016-5-26 00:18
感谢楼主分享
作者: TCK8888    时间: 2016-5-26 09:15
     感谢楼主分享
作者: SkyBlack    时间: 2016-5-26 09:17
虽然还没学到,不过还是要谢谢
作者: helloworld12138    时间: 2016-5-26 10:44

作者: 遇见未来2016    时间: 2016-5-26 14:22
感谢分享。。。加油加油




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