DataInputStream和DataOutputStream类有时没有必要存储整个对象的信息,而只是要存储一个对象的成员数据,成员数据的类型假设都是Java的基本数据类型,这样的需求不必使用到与Object输入、输出相关的流对象,可以使用DataInputStream、DataOutputStream来写入或读出数据。下面是一个例子:
/**
* 方法名称: * <br>方法的功能描述:1.将对象读取到指定路径的文件中;2.从指定路径中读取文件还原成对象 * @param args void 返回参数名|返回参数说明 * @throws 说明在某情况下,将发生什么异常 * @see * @author 张安定 */ 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; } public static void main(String[] args) { // TODO Auto-generated method stub Member[] members = {new Member("Justin",90), new Member("momor",95), new Member("Bush",88)}; try { //1.将对象读取到指定路径的文件中; args = new String []{"d:/test.txt"}; 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])); //2.读出数据并还原为对象 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(); } } }
|
|
来自: AndingZhang > 《java》