A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

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当体系明确后,再明确要使用哪个具体的对象
        通过设备来进行区分:
        源设备:内存,硬盘,键盘
        目的设备:内存,硬盘,控制台

7 个回复

倒序浏览
加油加油,一起努力
回复 使用道具 举报
感谢分享                    
回复 使用道具 举报
感谢楼主分享
回复 使用道具 举报
     感谢楼主分享
回复 使用道具 举报
虽然还没学到,不过还是要谢谢
回复 使用道具 举报
回复 使用道具 举报
感谢分享。。。加油加油
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马