ObjectInputStream
ObjectOutputStream
packageio;import java.io.*;public classObjectStreamTest {public static voidmain(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= newObjectInputStream(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();
}
}
}
}
}
测试用的类
packageio;importjava.io.Serializable;public class TargetObject implements Serializable { //必须要继承序列化的接口才能序列化(分解成固定格式)后保存在文件里
privateString name;private static intnum;publicTargetObject(){
}publicTargetObject(String name){this.name =name;
num++;
}publicString getName() {returnname;
}public voidsetName(String name) {this.name =name;
}public static intgetNum() {returnnum;
}public voidshow(){
System.out.print("name = " + name + "| num = " +num);
}
}
低级流:
FileInputStream
FileOutputStream
FileWriter
FileReader
高级流:
高级流都是通过低级流进行工作,可以理解为对低级流进行了扩展
比如:
缓存流 BufferedReader, BufferedWriter, BufferedInputStream, BufferedOutputStream
字符串流 StringReader, StringWriter
数组流 ByteArrayInputStream ByteArrayOutputStream, CharArrayReader, CharArrayWriter
对象流 ObjectInputStream, ObjectOutputStream