# ClassNotes0806 **Repository Path**: SKYBB_admin/ClassNotes0806 ## Basic Information - **Project Name**: ClassNotes0806 - **Description**: No description available - **Primary Language**: Java - **License**: GPL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-08-06 - **Last Updated**: 2020-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # zb_java0806 # 课堂笔记 *IO流* *自行扩展 NIO、NIO2* ## 1 IO流 ### 1.2 IO流 IO流分类: 按流向分:(以系统或cup进行划分,进入的是输入流,流出的是输出流) 输入流; 输出流 按流的编码分类: 字节流; 以字节作为传输;二进制01字节流; 字节流的处理类以Stream结尾; 都是InputStream和OutputStream的子类; 字符流; 以字符作为传输单位; 字符流的处理类以er结尾; 都是Reader和Writer的子类; * 1 文件输入输出字节流 以FileInputStream和FileOutputStream作为案例; * 2 输入输出字符流 以InputStreamReader和OutputStreamWriter作为案例; 使用字节流作为构造参数: 功能: 把字节流转为了字符流,可以指定编码; 要求:输入流和输出流的编码要一致; 输入输出流中引起乱码原因: 被读取的文件的编码、输入流的编码、输出流的编码、写出文件的编码要一致,否则会引起乱码; 【windows中文系统文件的默认编码是gbk】 代码[com.yuw.io.readerdemo.TestDriver]: 参见test01方法; * 3 带缓存功能的输入输出流 具有缓存功能,处理效率较高; 一般用于包装底层的字节流、字符流的处理; 代码[com.yuw.io.readerdemo.TestDriver]: 参见test02方法; * 4 对象流 对象流,就是把内存中对象的瞬时状态的内容写出到外部文件中,就做对象流; 对象流是对象在内存中的瞬时状态的固化; 对象流是字节流; 注意: (1)使用对象输入输出流操作的类必须实现Serializable接口,该接口没有抽象方法,只是一个标识性接口; (2)如果父类实现了序列化接口,那么子类也可以进行序列化; (3)从对象输出流文件中重新读取到内存中的对象是在堆中有重新创建了一个新的对象。【读取几次,就新创建几个对象】 (4)对象输入流读取的文件必须是对象输出流写出的文件。 (5)如果类中某个属性不需要写出到对象流,则可以使用反序列化关键字 Transient; 使用Transient修饰的属性的值不会被写到对象流中,当对象输入流读取的时候,Transient修饰的属性的值为该类型的默认值; 补充: 在内存中创建对象的方式: (1)new创建; (2)对象输入流创建; (3)反射; 应用场景: (1)一般在io、网络sockect中传输的类都需要实现序列化接口; (2)为什么需要实现序列化接口? 因为在io、网络socket通信中传输的内容顺序是无法保证的,所有需要对传输的内容进行顺序标号,传输到目的地端之后,再根据顺序标号回复内容,这个过程就是序列化的过程; * 1.3 XML概述 1 XML概念 (1)可扩展的标记语言;是树型层级结构,有一个根节点,根节点下有若干子节点;通过树型层级结果可以遍历整个xml的数据; (2)XML可以跨平台进行传输,可以作为数据的载体;(具有轻量级数据库的作用) (3)XML作用:存储数据;系统配置;数据交换; #### 参与贡献 1. Fork 本项目 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request #### 码云特技 1. 使用 Readme\_XXX.md 来支持不同的语言,例如 Readme\_en.md, Readme\_zh.md 2. 码云官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 你可以 [https://gitee.com/explore](https://gitee.com/explore) 这个地址来了解码云上的优秀开源项目 4. [GVP](https://gitee.com/gvp) 全称是码云最有价值开源项目,是码云综合评定出的优秀开源项目 5. 码云官方提供的使用手册 [http://git.mydoc.io/](http://git.mydoc.io/) 6. 码云封面人物是一档用来展示码云会员风采的栏目 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)