【读书笔记】TiJava——IO系统

本文详细介绍了Java IO系统的常用类及其用法,包括InputStream、OutputStream、Reader和Writer等,并探讨了装饰器模式的应用。此外,还介绍了序列化的两种方式:Serializable与Externalizable,以及它们之间的区别。最后,文章讲解了NIO的基本概念,包括通道和缓冲区。

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

File

•可表示文件也可表示目录
•相关类:FilenameFilter
•相关功能:
–list
–listFiles


io的装饰器模式

•一般先用缓冲装饰,再用其他装饰
•当使用DataOutputStream时,写字符串并且让DataInputStream能够恢复它的唯一可靠做法是用UTF-8编码,即使有writeUTF和readUTF方法

InputStream


•典型用法:
–DataInputStream in =new DataInputStream(new BufferedInputStream(new ByteArrayInputStream(byte[]buf)))
–DataInputStream in =new DataInputStream( newBufferedInputStream( newFileInputStream("Data.txt")));

OutputStream


•典型用法
–DataOutputStream out= new DataOutputStream(new BufferedOutputStream( newFileOutputStream("Data.txt")));

Reader


•典型用法
–BufferedReader in =new BufferedReader(new FileReader(filename));

Writer


•典型用法
–PrintWriter w =new PrintWriter(new BufferedWriter(new OutputStreamWriter(new FileOutputStream(fileName))));
–PrintWriter w =new PrintWriter(fileName);

以上类图中,灰色类为装饰器类,白色为被装饰类!

标准IO

•System.out/err都是PrintStream,可以直接使用
•但System.in是一个InputStream,使用前必须先包装

序列化Serializable

•默认用法——Serializable
•ObjectOutputStream
–writeObject
•ObjectInputStream
–readObject
•反序列化时,必须保证虚拟机能找到.class文件

控制序列化Externaliable

•实现Serializable,并加了2个方法
–writeExternal
–readExternal
•这2个方法在序列化和反序列化时被自动调用
•区别:使用Externaliable的类,必须有默认构造函数。而Serializable不需要

Externaliable的替代方法

•实现Serializable
•类中添加writeObject和readObject,签名如下
–privatevoid writeObject(ObjectOutputStream s)throws IOException;
–privatevoid readObject(ObjectInputStream s)throws IOException,ClassNotFoundException;
•签名必须是private的

Preferences

•偏好、喜好
•Windows下,操作的是注册表

nio

通道与缓冲

•通道:channel
–如FileChannel
•缓冲:buffer
–如:ByteBuffer

大、小端

•大端:BE(BigEndian)
–一个存储字的低位存储在内存的高地址,高位存储在内存的低地址
•小端:LE(LittleEndian)
–一个存储字的低位存储在内存的低地址,高位存储在内存的高地址
•ByteBuffer默认使用BE

nio类图





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值