DataInputStream和DataOutputStream类

来源:互联网 发布:阿里云80端口不能访问 编辑:程序博客网 时间:2024/04/29 21:21

注:转载之>>>http://xyiyy.iteye.com/blog/361098

DataInputStream和DataOutputStream类

1.有时没有必要存储整个对象的信息,而只是要存储一个对象的成员数据,成员数据的类型假设都是Java的基本数据类型,这样的需求不必使用到与Object输入、输出相关的流对象,可以使用DataInputStream、DataOutputStream来写入或读出数据。下面是一个例子:

Java代码  收藏代码
  1. package ysu.hxy;  
  2.   
  3. public class Member {  
  4.     private String name;  
  5.     private int age;  
  6.   
  7.     public Member() {  
  8.     }  
  9.   
  10.     public Member(String name, int age) {  
  11.         this.name = name;  
  12.         this.age = age;  
  13.     }  
  14.   
  15.     public void setName(String name) {  
  16.         this.name = name;  
  17.     }  
  18.   
  19.     public void setAge(int age) {  
  20.         this.age = age;  
  21.     }  
  22.   
  23.     public String getName() {  
  24.         return name;  
  25.     }  
  26.   
  27.     public int getAge() {  
  28.         return age;  
  29.     }  
  30. }  

 

打算将Member类实例的成员数据写入文件中,并打算在读入文件数据后,将这些数据还原为Member对象。下面的代码简单示范了如何实现这个需求。

Java代码  收藏代码
  1. package ysu.hxy;  
  2.   
  3. import java.io.*;  
  4.   
  5. public class DataStreamDemo   
  6. {  
  7.     public static void main(String[] args)   
  8.     {  
  9.         Member[] members = {new Member("Justin",90),  
  10.                             new Member("momor",95),  
  11.                             new Member("Bush",88)};  
  12.         try  
  13.         {  
  14.             DataOutputStream dataOutputStream = new DataOutputStream(new FileOutputStream(args[0]));  
  15.   
  16.             for(Member member:members)  
  17.             {  
  18.                 //写入UTF字符串  
  19.                 dataOutputStream.writeUTF(member.getName());  
  20.                 //写入int数据  
  21.                 dataOutputStream.writeInt(member.getAge());  
  22.             }  
  23.   
  24.             //所有数据至目的地  
  25.             dataOutputStream.flush();  
  26.             //关闭流  
  27.             dataOutputStream.close();  
  28.   
  29.             DataInputStream dataInputStream = new DataInputStream(new FileInputStream(args[0]));  
  30.   
  31.             //读出数据并还原为对象  
  32.             for(int i=0;i<members.length;i++)  
  33.             {  
  34.                 //读出UTF字符串  
  35.                 String name = dataInputStream.readUTF();  
  36.                 //读出int数据  
  37.                 int score = dataInputStream.readInt();  
  38.                 members[i] = new Member(name,score);  
  39.             }  
  40.   
  41.             //关闭流  
  42.             dataInputStream.close();  
  43.   
  44.             //显示还原后的数据  
  45.             for(Member member : members)  
  46.             {  
  47.                 System.out.printf("%s\t%d%n",member.getName(),member.getAge());  
  48.             }  
  49.         }  
  50.         catch(IOException e)  
  51.         {  
  52.             e.printStackTrace();  
  53.         }  
  54.     }  
  55. }  

 在从文件读出数据时,不用费心地自行判断读入字符串时或读入int类型时何时将停止,使用对应的readUTF()和readInt()方法就可以正确地读入完整的类型数据。


0 0
原创粉丝点击