本文共 1623 字,大约阅读时间需要 5 分钟。
1.有时没有必要存储整个对象的信息,而只是要存储一个对象的成员数据,成员数据的类型假设都是Java的基本数据类型,这样的需求不必使用到与Object输入、输出相关的流对象,可以使用DataInputStream、DataOutputStream来写入或读出数据。下面是一个例子:
Java代码package ysu.hxy;public class Member { private String name;private int age;public Member() { }public Member(String name, int age) { this.name = name;this.age = age;}public void setName(String name) { this.name = name;}public void setAge(int age) { this.age = age;}public String getName() { return name;}public int getAge() { return age;}}打算将Member类实例的成员数据写入文件中,并打算在读入文件数据后,将这些数据还原为Member对象。下面的代码简单示范了如何实现这个需求。Java代码package ysu.hxy;import .*;public class DataStreamDemo{ public static void main(String[] args){ Member[] members = {new Member("Justin",90),new Member("momor",95),new Member("Bush",88)};try{ DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(args[0]));for(Member member:members){ //写入UTF字符串dataOutputStream.writeUTF(member.getName());//写入int数据dataOutputStream.writeInt(member.getAge());}//所有数据至目的地dataOutputStream.flush();//关闭流dataOutputStream.close();DataInputStream dataInputStream = new DataInputStream(new FileInputStream(args[0]));//读出数据并还原为对象for(int i=0;i<members.length;i++){ //读出UTF字符串String name = dataInputStream.readUTF();//读出int数据int score = dataInputStream.readInt();members[i] = new Member(name,score);}//关闭流dataInputStream.close();//显示还原后的数据for(Member member : members){ System.out.printf("%s\t%d%n",member.getName(),member.getAge());}}catch(IOException e){ e.printStackTrace();}}}在从文件读出数据时,不用费心地自行判断读入字符串时或读入int类型时何时将停止,使用对应的readUTF()和readInt()方法就可以正确地读入完整的类型数据。转载地址:http://kbwbm.baihongyu.com/