ObjectInputStream
ObjectOutputStream
package io; import java.io.*; public class ObjectStreamTest { public static void main(String[] args){ TargetObject to1 = new TargetObject("aaa"); //测试用对象 FileInputStream fis = null; FileOutputStream fos = null; ObjectInputStream ois = null; ObjectOutputStream oos = null; try { fos = new FileOutputStream("C:\\Users\\Administrator\\Desktop\\test\\objectTest.txt"); oos = new ObjectOutputStream(fos); //高级流,用来处理低级流, 对象流,数组流,缓存流等都是高级流 oos.writeObject(to1); oos.flush(); //存入成功,不过内容是乱码,就不贴了 fis = new FileInputStream("C:\\Users\\Administrator\\Desktop\\test\\objectTest.txt"); ois = new ObjectInputStream(fis); TargetObject to2 = (TargetObject) ois.readObject(); //readObject()返回的是Object类型,需要强转 to2.show(); //name = aaa| num = 1 //读取成功 }catch(Exception e){ e.printStackTrace(); }finally { if(fis != null){ try { fis.close(); } catch (IOException e) { e.printStackTrace(); } } if(ois != null){ try { ois.close(); } catch (IOException e) { e.printStackTrace(); } } if(fos != null){ try { fos.close(); } catch (IOException e) { e.printStackTrace(); } } if(oos != null){ try { oos.close(); } catch (IOException e) { e.printStackTrace(); } } } } }
测试用的类
package io; import java.io.Serializable; public class TargetObject implements Serializable { //必须要继承序列化的接口才能序列化(分解成固定格式)后保存在文件里 private String name; private static int num; public TargetObject(){ } public TargetObject(String name){ this.name = name; num++; } public String getName() { return name; } public void setName(String name) { this.name = name; } public static int getNum() { return num; } public void show(){ System.out.print("name = " + name + "| num = " + num); } }
低级流:
FileInputStream
FileOutputStream
FileWriter
FileReader
高级流:
高级流都是通过低级流进行工作,可以理解为对低级流进行了扩展
比如:
缓存流 BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream
字符串流 StringReader, StringWriter
数组流 ByteArrayInputStream ByteArrayOutputStream, CharArrayReader, CharArrayWriter
对象流 ObjectInputStream, ObjectOutputStream