java对象序列化

打印流

public class Hello {
   public static void main(String[] args) throws Exception {
      File file = new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "123.txt");
      OutputStream outputStream = new FileOutputStream(file);
      PrintStream printStream = new PrintStream(outputStream);
      printStream.print(123);
      printStream.println("hello");
      printStream.println(12.5);
      printStream.close();
   }
}

键盘输入读取到程序中

public class Hello {
   public static void main(String[] args) throws Exception {
      InputStream in = System.in;
      byte[] data = new byte[100];
      System.out.println("输入数据:");
      int read = in.read(data);
      System.out.println(read);
      System.out.println(new String(data,0,read));
   }
}

扫码流

public class Hello {
   public static void main(String[] args) throws Exception {
      Scanner scanner = new Scanner(new FileInputStream(new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "123.txt")));
      scanner.useDelimiter("\n");
      while (scanner.hasNext()){
         String next = scanner.next();
         System.out.println(next);
      }
      scanner.close();
   }
}

scanner.useDelimiter("\n");表示以回车(换行)为定界符,回车间为一段扫码的内容。

扫描键盘输入

Scanner scanner = new Scanner(System.in);

注意:使用while判断键盘输入,程序可能会无法结束

对象序列化

序列化操作类:ObjectOutputStream,写到文件中

public class Hello {
   public static void main(String[] args) throws Exception {
      A a = new A("hello", 123);
      File file = new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "a.ser");
      OutputStream outputStream = new FileOutputStream(file);
      ObjectOutputStream objectOutputStream = new ObjectOutputStream(outputStream);
      objectOutputStream.writeObject(a);
      objectOutputStream.close();
   }
}

class A implements Serializable {
   private String title;
   private Integer number;

   public A(String title, Integer number) {
      this.title = title;
      this.number = number;
   }

   public String getTitle() {
      return title;
   }

   public void setTitle(String title) {
      this.title = title;
   }

   public Integer getNumber() {
      return number;
   }

   public void setNumber(Integer number) {
      this.number = number;
   }

   @Override
   public String toString() {
      return "A{" +
            "title='" + title + '\'' +
            ", number=" + number +
            '}';
   }
}

实体需要实现可序列化的接口implements Serializable,表示一种能力

反序列化操作类:ObjectInputStream,读到程序里

public class Hello {
   public static void main(String[] args) throws Exception {
      File file = new File("E:" + File.separator + "myFile" + File.separator + "test" + File.separator + "a.ser");
      InputStream inputStream = new FileInputStream(file);
      ObjectInputStream objectInputStream = new ObjectInputStream(inputStream);
      A a = (A) objectInputStream.readObject();
      System.out.println(a);
   }
}

transient关键字,实体的属性使用该关键子,进行序列化时该属性值将不会被保存,反序列化的结果为,该属性的值为该属性类型的默认值。

private String title;
private transient Integer number;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值