zoukankan      html  css  js  c++  java
  • Java对象流

     1 package org.java;
     2 
     3 import java.io.File;
     4 import java.io.FileInputStream;
     5 import java.io.FileOutputStream;
     6 import java.io.IOException;
     7 import java.io.ObjectInputStream;
     8 import java.io.ObjectOutputStream;
     9 import java.io.Serializable;
    10 /*
    11  ObjectOutputStream:对象输入流
    12  ObjectInputStream:对象输出流
    13  分别是 InputStream和OutputStream的子类
    14  构造方法
    15  ObjectOutputStream(OutputStream out);
    16  ObjectInputStream(InputStream in);
    17  先用InputStream的子类 创建一个 流对象(如:fileInputStream),然后 用ObjectInputStream(fileInputStream)接收参数 创建对象流
    18  注意:对象实现Serializable接口-- 即:implements Serializable 就可以了
    19  使用
    20  writeObject(Object object);//将对象 写入文件中
    21  readObject();//读取一个文件到程序中-->需要强制类型转换成 自定的对象
    22  
    23  */
    24 public class Object {
    25 
    26     public static void main(String[] args) {
    27         /*
    28          * 定义一个Student类,里面含name、age属性;
    29          * 定义一个测试类,创建一个Student数组,数组中的Student对象赋初值,
    30          * 将数组中的各个Student对象的内容输出到student.txt文件中;
    31          * 然后将文件中的内容读出并在显示器中显示出来。
    32          * 
    33          */
    34         //ObjectOutputStream是对Java对象进行序列号处理,处理后的数据,不是文本数据,所以该数据保存到txt中,必然是乱码。
    35         //创建一个Student数组,数组中的Student对象赋初值,
    36         Student[] students=new Student[5];
    37         for(int i=0;i<5;i++) {
    38             students[i]=new Student("名字Jack"+i, 20+i);
    39         }
    40         try {
    41             // 将数组中的各个Student对象的内容输出到student.txt文件中;
    42             //需要在try-catch语句中 
    43             String path="C:\Users\Nirobert Einteson\Desktop\java\File\";//文件的所在的目录 
    44             File studentFile=new File(path+"student.txt");
    45             
    46             FileOutputStream fileOutputStream=new FileOutputStream(studentFile);
    47             ObjectOutputStream objectOutputStream=new ObjectOutputStream(fileOutputStream);//源 是fileOutputStream
    48             for(Student student:students) {
    49                 //System.out.println(student);
    50                 objectOutputStream.writeObject(student);
    51             }
    52             objectOutputStream.writeObject(null);//写入空,判断 是否到达末尾了 
    53             objectOutputStream.flush();//清空缓冲区
    54             objectOutputStream.close();//先关闭增强型的 对象流
    55             fileOutputStream.close();//然后再关闭 字节型 流
    56             
    57             //关闭 写的文件之后,才能读文件;
    58             //然后将文件中的内容读出并在显示器中显示出来。
    59             FileInputStream fileInputStream=new FileInputStream(studentFile);//读取这个文件,先变成字节流文件
    60             ObjectInputStream objectInputStream=new ObjectInputStream(fileInputStream);//字节流文件 作为 源
    61             Student student;//需要强制类型转换(Student)objectInputStream.readObject();
    62             while((student=(Student)objectInputStream.readObject())!=null) {//引用型,为空返回值是null//如果不是没有加入null的话,容易抛出异常;
    63                 System.out.println(student);
    64             }
    65             objectInputStream.close();
    66             fileInputStream.close();
    67             
    68         }catch (Exception e) {
    69             System.out.println(e);
    70         }        
    71     }
    72 
    73 }
     1 package org.java;
     2 
     3 import java.io.Serializable;
     4 
     5 public class Student implements Serializable{
     6     String name;
     7     int age;
     8     public Student() {
     9         
    10     }
    11     public Student(String name,int age) {
    12         this.name=name;
    13         this.age=age;
    14     }
    15     @Override
    16     public String toString() {
    17         return "Student [name=" + name + ", age=" + age + "]";
    18     }
    19     
    20 }
    1 Student [name=名字Jack0, age=20]
    2 Student [name=名字Jack1, age=21]
    3 Student [name=名字Jack2, age=22]
    4 Student [name=名字Jack3, age=23]
    5 Student [name=名字Jack4, age=24]
  • 相关阅读:
    【洛谷P2014】选课【树形DP】【背包】
    【洛谷P2014】选课【树形DP】【背包】
    【洛谷P1939】【模板】矩阵加速(数列)
    【洛谷P1939】【模板】矩阵加速(数列)
    小X的液体混合【并查集】
    小X的液体混合【并查集】
    【JZOJ5914】盟主的忧虑【LCA】【并查集】【BFS】
    【JZOJ5914】盟主的忧虑【LCA】【并查集】【BFS】
    Silverlight 4:数据验证-今天的提示-第1部分
    酷的菜单按钮
  • 原文地址:https://www.cnblogs.com/NirobertEinteson/p/12023802.html
Copyright © 2011-2022 走看看