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类图
