zoukankan      html  css  js  c++  java
  • 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 %d%n",member.getName(),member.getAge());
    }
    }
    catch(IOException e)
    {
    e.printStackTrace();
    }
    }
    }
    在从文件读出数据时,不用费心地自行判断读入字符串时或读入int类型时何时将停止,使用对应的readUTF()和readInt()方法就可以正确地读入完整的类型数据。

  • 相关阅读:
    1001. 害死人不偿命的(3n+1)猜想 (15)
    单链表排序
    简单插入排序
    简单选择排序
    C语言-随机数
    二分查找(折半查找)
    顺序查找-顺序查找-带哨兵查找
    队列-链表实现
    循环队列_数组实现
    队列-顺序存储-简单实现
  • 原文地址:https://www.cnblogs.com/keyi/p/7193778.html
Copyright © 2011-2022 走看看