DataInputStream和DataOutputStream类

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 java.io.*;  
      
    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()方法就可以正确地读入完整的类型数据。
分享到:

你可能感兴趣的:(java,String,object,存储,Class,import)