IO Stream - 其它流

2021-09-03  本文已影响0人  七喜丶

交换流

对象操作流

对象序列化流

对象反序列化流

方法名 说明
ObjectInputStream(OutputStream out) 创建一个写入指定的InputStream的 ObjectInputStream
方法名 说明
void readObject(Object obj) 将指定的对象写入ObjectInputStream

代码展示

public class MyObjectInputStream {

  public static void main(String[] args) throws IOException, ClassNotFoundException {
      File file = new File("/Users/blue/Desktop/HeiMa/aaaa","b.txt")

      ObjectInputStream ois = new ObjectInputStream(new FileInputStream(file));

      Student o = (Student)ois.readObject();
      System.out.println(o);

      ois.close();
  }
}
  • 用对象序列化流序列化了一个对象后,假如我们修改了对象所属的类文件,读>取数据会不会出问题呢? 会出问题,会抛出InvalidClassException异常
  • 如果出问题了,如何解决呢? 重新序列化 给对象所属的类加个serialVersionUIDprivate static final long serialVersionUID = 42L;

transient

如果一个对象中的某个成员变量的值不想被序列化,又该如何实现呢? 给该成员变量加transient关键字修饰,该关键字标记的成员变量不参与序列化过程 ArrayList中的transient

Properties集合

public class PropertiesDemo03 { 
        public static void main(String[] args) throws IOException { 
              //把集合中的数据保存到文件 // 
                myStore(); 
             //把文件中的数据加载到集合       
                myLoad(); 
                private static void myLoad() throws IOException { 
                Properties prop = new Properties(); 
            //void load(Reader reader):
                FileReader fr = new FileReader("myOtherStream\\fw.txt"); 
                prop.load(fr); 
                fr.close(); 
                System.out.println(prop); 
          }
           private static void myStore() throws IOException { 
                Properties prop = new Properties(); 
                prop.setProperty("itheima001","佟丽娅");         
                prop.setProperty("itheima002","赵丽颖"); 
                prop.setProperty("itheima003","刘诗诗"); 
                //void store(Writer writer, String comments): 
                FileWriter fw = new FileWriter("myOtherStream\\fw.txt");       
                prop.store(fw,null); 
               fw.close(); 
          }
      }
上一篇下一篇

猜你喜欢

热点阅读