File02

对象的序列化

 

ObjectInputStream

ObjectOutputStream

流可以操作数据,现在把数据封装到对象中(Object),对象在堆内存中。

所以可以通过流将堆内存中的对象存到硬盘上。  对象的持久化[对象的序列化]

File-02 - 九五二七 - 今天
  使用该构造方法得有一个 目的 ” . 给方法的功能是让流和被操作的对象相结合

 介绍几个有特点的方法:

  writeObject()

File-02 - 九五二七 - 今天
 
File-02 - 九五二七 - 今天
  File-02 - 九五二七 - 今天
  就是对象想要实现 序列化 ,需要先实现接口 Serializable

File-02 - 九五二七 - 今天

接口Serializable内部没有方法。没有方法的接口称作标记接口

相当于在该对象盖个章,告知虚拟机可以序列化。

原理:UID

静态是不能被序列化的。静态在方法区,该方法只能静态化堆内存中

非静态的不在方法区中,在堆内存中也不想被序列化的,可用关键字:transient奋斗

  File-02 - 九五二七 - 今天
  transient: 短暂的 临时的。--trans转移 –ient…[tranzi nt]

 Stay Hungray Stay Foolish

管道流

正常读写流需要一个数组中转,先通过流读进数组,再通过流写出数组,

PipedInputStreamPipedOutputStream

输入输出可以直接进行连接,通过结合线程使用。

此方法不建议使单线程,无法判断先读还是先写,读多少,写多少.易产生死锁

集合中涉及到IO流的Properties(),IO流中涉及到多线程的是管道流

打分

RandomAccessFile

随机访问文件 RandomAccessFile

结尾处没有父类明,是自成一派的工具类。直接继承Object

该类不是IO包体系中的子类。而是直接继承Object

但是它是IO包中的成员,因为它具备读与写功能

内部封装了一个数组,而且通过指针对数组的元素进行操作。

可以通过getFilePointer获取指针位置。

同时可以通过seek改变指针的位置

操作数据必然是流,而RandomAccessFile可以操作数据

其实完成读写的原理就是内部封装了字节输入流和输出流

通过构造函数可以看出,该类只能操作文件。

而且操作文件还有模式:只读r,,读写rw

File-02 - 九五二七 - 今天
 
File-02 - 九五二七 - 今天

就是只接收这4种字母,如wirteabc格式错误不会接收

writeInt()方法:

 
File-02 - 九五二七 - 今天
 
File-02 - 九五二七 - 今天
如果模式为只读  r 。不会创建文件。会去读取一个已存在文件。

如果该文件不存在,则会出现异常。

如果模式rw。操作的文件不存在,会自动创建。如果存则不会覆盖。

 

RandomAccessFile通过与多线程,可以实现“多线程下载”。

IO流中只用该流可以实现多线程下载。

要注意:该流主要方法是seek(),使用seek()前提是存储要有规律

                                                                                                   DataStream.操作基本数据类型

写入不同类型数据:

  File-02 - 九五二七 - 今天
按照顺序可以读取相对应类型数据:
File-02 - 九五二七 - 今天

特殊方法:

writeUTF() 

File-02 - 九五二七 - 今天

ByteArrayStream

ByteArrayInputStream: 

File-02 - 九五二七 - 今天
  直接将源中的数据存放在内部缓冲区的数组中。

不涉及到底层调用,所以不会产生任何IO异常。

.close()方法也就不起作用了。

 ByteArrayOutputStream

    File-02 - 九五二七 - 今天
 
     File-02 - 九五二七 - 今天

还有对应的操作字符数组:

CharArrayReaderChaArrayWrite

操作字符串:

StringReaderStringWriter

06编码表

编码表:就是将各个国家的文字用数字表示,并一一对应,形成一张表。

常见编码表: 
File-02 - 九五二七 - 今天
 
File-02 - 九五二七 - 今天
 
File-02 - 九五二七 - 今天
  编码:字符串变成字节数组

 str.getBytes(charsetName);

 解码:字节数据变成字符串

  new String(byte[],charsetName);

File-02 - 九五二七 - 今天
字符编码

  File-02 - 九五二七 - 今天
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值