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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 小石姐姐 于 2018-8-9 11:37 编辑


第一章 缓冲流
缓冲流的原理:创建流对象时,会创建一个内置默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,提高读写效率。底层是使用基本流(FileXxx)来读写        
字节缓冲流
BufferedInputStream 缓冲字节输入流
构造方法    BufferedInputStream(InputStream in)
使用步骤:
   
[AppleScript] 纯文本查看 复制代码
     1.创建FileInputStream对象, 构造方法中绑定要读取的数据源[/align]        2.创建BufferedInputStream对象, 构造方法中传递FileInputStream对象, 提高FileInputStream效率
        3.使用BufferedInputStream对象中的方法 read(), 读取文件
        4.释放资源 close()
BufferedOutputStream 缓冲字节输出流
构造方法    BufferedOutputStream(OutputStream out)
使用步骤:
   
   
[AppleScript] 纯文本查看 复制代码
     1.创建FileOutputStream对象, 构造方法中绑定要输出的目的地[/align]        2.创建BufferedOutputStream对象, 构造方法中传递FileOutputStream对象, 提高FileOutputStream效率
        3.使用BufferedOutputStream对象中的方法 write(), 把数据写入到内部缓冲区中
        4.使用BufferedOutputStream对象中的方法 flush(), 把内部缓冲区中的数据,刷新到文件中
        5.释放资源(会先调用flush方法刷新数据, 第4步可以省略)
字符缓冲流
BufferedReader 缓冲字符输入流
[AppleScript] 纯文本查看 复制代码
构造方法    BufferedReader(Reader in)
特有方法    String readLine():读一行文字
BufferedWriter 缓冲字符输出流
[AppleScript] 纯文本查看 复制代码
构造方法BufferedWriter(Writer out)
特有方法    void newLine():写一行行分割符

第二章 转换流
        编码:按照某种规则将字符存储到计算机中
        解码:将存储在计算机中的二进制数按照某种规则解析显示
        字符集:ASCII字符集—ASCII编码
                GBK字符集—GBK编码
                Unicode字符集—UTF8编码、UTF16编码、UTF32编码
                ANSI:表示使用系统默认编码表
        乱码原因: 读写编码不一致
InputStreamReader类(Reader子类,字节到字符流的桥梁)
[Java] 纯文本查看 复制代码
InputStreamReader(InputStream in):创建一个使用默认字符集的字符流
InputStreamReader(InputStream in, String charsetName):创建一个使用指定字符集的字符流
OutputStreamReader类(Writer子类,字符流到字节流的桥梁)
[Java] 纯文本查看 复制代码
OutputStreamReader(OutputStream out):创建一个使用默认字符集的字符流
OutputStreamReader(OutputStream out, String charsetName):创建一个使用指定字符集的字符流

第二章 序列化
        序列化:内存中的对象转换为字节序列, 以流的方式写入到磁盘的文件中
        反序列化: 磁盘文件中的字节序列, 以流的方式读取到内存中变成对象
对象序列化流:ObjectOutputStream类
        构造方法:ObjectOutputStream(OutputStream out)
        特有方法:void writeObject(Object obj):将对象写出
对象反序列化流:ObjectInputStream类
        构造方法:ObjectInputStream(InputStream in)
        特有方法:void readObject():读取对象
        transient瞬态关键字:避免属性序列化
        static 修饰的成员变量属于类不属于对象, 所以不能序列化
        transient 修饰的成员变量, 不能被序列化
                如果对象的某个属性不希望被序列化, 可以使用transient修饰, 这样就不会被对象流写到文件中
        注意:
             被读写的对象的类, 必须实现 java.io.Serializable 接口, 否则会抛出NotSerializableException
              该类的所有属性也都必须是可序列化的. (实现 java.io.Serializable 接口)
              如果某个属性不需要序列化, 则需要用 transient 修饰为瞬态的
              如果要将集合序列化, 那么集合中存储的对象也必须是可序列化的
打印流PrintStream
PrintStream特点:
        1. 只有输出流, 没有输入流
        2. PrintStream永远不会抛出IOException
        3. 有特殊方法 print(), println(), 可以输出任意类型的值
java.io.PrintStream类: 字节打印流
构造方法:
[Java] 纯文本查看 复制代码
PrintStream(File file): 创建字节打印流, 输出到一个文件
PrintStream(OutputStream out): 创建字节打印流, 输出到一个字节输出流
PrintStream(String fileName): 创建字节打印流, 输出到一个文件路径
注意事项:
        如果用 write() 方法, 会查编码表
        如果用 print(), println(), 则原样输出

IO流框架体系结构

IO流框架体系结构.png (29.47 KB, 下载次数: 6)

IO流框架体系结构.png

2 个回复

倒序浏览
哥们   这个视频可以给我看看么
回复 使用道具 举报
mljqqh 发表于 2018-8-7 12:59
哥们   这个视频可以给我看看么

不好意思,这个视频没有办法外传,有意向学习的话可以看黑马官网上的,或者去学校咨询都行.
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马