I/O
1. 了解
l 地位高
l 本质难度大,甚至涉及硬件操作
2. 流模型
数据流 管道 目的地
站在程序的立场谈论输入输出
3. I/O API分类
字节流,传输的最小单位是字节,当传输二进制数据时选择字节
l InputStream(字节输入)
l OutStream(字节输出)
字符流,传输的最小单位是字符,当我们传输文本数据时选择字符
l Reader(字符输入)
l Writer (字符输出)
l 全是抽象类
4. 操作I/O流类
步骤:
l 选取管道fr = newFileReader("lianxi2.txt");
n 确定四个父类的哪一个
l 创建管道
n 先赋值为空,在new出来
l 操作管道
n 输入—read( )
n 输出—while( )
l 关闭管道
n 在finally中书写.close()
5. 特例代码(文件拷贝
fw = new FileWriter("lianxi1.txt");
int str2;
while((str2 = fr.read(cr)) != -1){
fw.write(cr, 0, str2);
fw.flush();
6. 对象流(重点)
对象序列化(对象输出流)
l 将程序中的对象以二进制流的形式输出
n Object OutputStream
1. 要求把一个对象存入到文件当中
2. New出节点流与对象流,对象流的参数为节点流
3. 让对象实现serializable接口
n 要序列化一个类,除了这个类要实现Serializable接口,这个类的每个属性类型都要实现类接口
n 如果需要让某个属性不参与序列化,那么就用transient这个关键字对属性进行修饰
n 序列化的类必须和反序列化的类保持一致,不能进行修改。(做任何修改,都需要重新序列化)
对象反序列化(对象输出流)
l 将输入的二进制流直接转换为程序中的对象
n 至少要用一个节点流,这是产生对象的第二种方式
n ObjectInputStream
了解
l 第二种创建对象方法
l JavaBean规范
l EJB基础(分布式应用,重量级Web Service)
l 管道对接—装饰器模式