JavaSE之io流

流的分类:

  • 根据流的操作的方式分类:输入流和输出流
  • 根据数据的类型分类:字节流和字符流

  • 字节流:传输的是字节,可以传输任意类型的数据。----视频,音频,文件,图片等。
  • 字符流:传输的也是字节,不同点在于传输过程中加入了编码的操作,让我们在传输字符的时候更加便捷。----文件。

  • 字节流:–对应的父类
  • 字节输入流:InputStream
  • 字节输出流:OutputStream

  • 字符流:–对应的父类
  • 字符读入流(将数据输入内存):Reader
  • 字符写出流(将数据从内存取出):Writer
    在这里插入图片描述
  • 流的体系
    在这里插入图片描述
  • 缓冲流
    为了提高数据读写的速度,Java API提供了带缓冲功能的流类,在使用这些流类时,会创建一个内部缓冲区数组,缺省使用8192个字节(8Kb)的缓冲区。
    缓冲流要“套接”在相应的节点流之上,根据数据操作单位可以把缓冲流分为:
    BufferedInputStream 和 BufferedOutputStream
    BufferedReader 和 BufferedWriter

  • 转换流
    转换流提供了在字节流和字符流之间的转换。
    InputStreamReader:将InputStream转换为Reader
    OutputStreamWriter:将Writer转换为OutputStream

  • 常见的编码表
    ASCII:美国标准信息交换码。用一个字节的7位可以表示。
    ISO8859-1:拉丁码表。欧洲码表用一个字节的8位表示。
    GB2312:中国的中文编码表。最多两个字节编码所有字符
    GBK:中国的中文编码表升级,融合了更多的中文文字符号。最多两个字节编码
    Unicode:国际标准码,融合了目前人类使用的所有字符。为每个字符分配唯一的字符码。所有的文字
    都用两个字节来表示。
    UTF-8:变长的编码方式,可用1-4个字节来表示一个字符

  • 标准输入、输出流
    System.in和System.out分别代表了系统标准的输入和输出设备
    默认输入设备是:键盘,输出设备是:显示器
    System.in的类型是InputStream
    System.out的类型是PrintStream,其是OutputStream类,FilterOutputStream 的子类

  • 对象流
    ObjectInputStream和OjbectOutputSteam:用于存储和读取基本数据类型数据或对象的处理流。它的强
    大之处就是可以把Java中的对象写入到数据源中,也能把对象从数据源中还原回来。
    序列化:用ObjectOutputStream类保存基本类型数据或对象的机制。
    反序列化:用ObjectInputStream类读取基本类型数据或对象的机制。

  • 对象的序列化
    对象序列化机制允许把内存中的Java对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,或通过网络将这种二进制流传输到另一个网络节点。当其它程序获取了这种二进制流,就可以恢复成原来的Java对象。序列化的好处在于可将任何实现了Serializable接口的对象转换为字节数据,使其在保存和传输时可被还原。序列化是RMI(Remote Method Invoke-远程方法调用)过程的参数和返回值都必须实现的机制。而RMI是javaEE的基础,因此序列化机制是JavaEE平台的基础。如果需要让某个对象支持序列化机制,则必须让对象所属的类及其属性是可序列化的,为了让某
    个类是可序列化的,该类必须实现如下两个接口之一,否则会抛出NotSerializableException。
    通常实现Serializable
  • 瞬态关键字
    当一个类的对象需要被序列化时,某些属性不需要被序列化,这时不需要序列化的属性可以使用关键字transient修饰。只要被transient修饰了,序列化时这个属性就不会琲序列化了。同时静态修饰也不会被序列化,因为序列化是把对象数据进行持久化存储,而静态的属于类加载时的数据,不会被序列化。
public class Person implements Serializable { 
	/** 给类显示声明一个序列版本号。 */ 
	private static final long serialVersionUID = 1L; 
	private static String name; 
	private transient/*瞬态*/ 
	int age; 
	public Person() { 
		super(); 
	}
	public Person(String name, int age) {
		 super(); 
		 this.name = name; 
		 this.age = age; 
	}
	...... 
}

文件复制
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值