文件传输管道-------IO流

本文介绍了Java中的IO流概念,包括输入流和输出流的基本分类。详细讲解了Properties类,它是Hashtable的子类,可用于存储和加载属性到文件。此外,还讨论了序列化和反序列化的过程,包括其概念、用途和所需技术,强调了实现Serializable接口的重要性以及transient关键字的作用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.IO流概念

io流可以理解为文件传输的一个通道。I 和 O分别代表输入(Input)和输出(Output)。

           把内存中的数据存储到持久化设备上这个动作称为输出(写)Output操作。把持久设备上的数据读取到内存中的这个动作称为输入(读)Input操作。这种输入和输出动作称为IO操作。其中用到的流对象称为IO流。

2.IO流分类

          操作字节文件的输入流和输出流分别以InputStream和OutPutStream作为基本流;操作字符的输入流和输出流分别是以Reader和Writer作为基本流。

3.Propeties类

Properties集合是Hashtable集合的子类,也是唯一一个能和IO流直接结合使用的集合类。

 A: Properties集合的特点
        * a: Properties类介绍
            * Properties 类表示了一个持久的属性集。Properties 可保存在流中或从流中加载。属性列表中每个键及其对应值都是一个字符串
        * b: 特点
            * Hashtable的子类,map集合中的方法都可以用。
            * 该集合没有泛型。键值都是字符串。
            * 它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。
            * 有和流技术相结合的方法。
        * c: 方法介绍
            * load(InputStream inputStream)  把指定流所对应的文件中的数据,读取出来,保存到Propertie集合中
            * load(Reader reader) 按简单的面向型的格式从输入字符流中读取属性列表(键和元素对)
            * store(OutputStream outputStream,String commonts) 把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息
            * stroe(Writer writer,String comments) 以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符

4.序列化和反序列化

  4.1概念

序列化:把java对象转成字节序列的过程(相当于java源文件编译成为字节码文件)。

反序列化:把字节序列恢复为java对象的过程(将文件从磁盘中读取到内存中)。

  4.2用途

1.将对象的字节码文件永久地保存在磁盘中。对象中的数据,以流的形式,写入到文件中保存过程称为写出对象。

2.在网络中进行字节码文件的传输。在文件中,以流的形式,将对象读出来,读取对象

  4.3需要的技术

ObjectOutputStream将对象写进文件中,实现序列化。

ObjectInputStream 将文件对象读取出来,实现反序列化。

注意:需要序列化的类必须实现Serializable接口。该接口中没有任何方法,知识作为一个标识,被该接口标识的类,代表可以被序列化。

transient关键字:静态成员是不能被序列化和反序列化的,但是有些时候我们会有这样的需求;非静态的成员也不想被序列化或者反序列化,那该怎么办呢?针对这种情况,我们可以通过transient关键字解决。被transient修饰的属性不能被序列化,transient关键字只能修饰成员变量。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值