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()方法就可以正确地读入完整的类型数据。

  • 相关阅读:
    jquery ajax get 数组参数
    xcopy中文文件名,中文件目录乱码问题
    小程序使用wxParse插件解析html标签图片间距问题
    30分钟彻底弄懂flex布局
    abp ueditor 多图以及文件无法上传
    Lubuntu 18.04 自动登录
    树莓派虚拟环境手动安装HA
    ESP-01S刷ESPEasy固件,接入HA
    百度TTS的来由
    Pi 3B+编译安装python3.6.8
  • 原文地址:https://www.cnblogs.com/keyi/p/7193778.html
Copyright © 2011-2022 走看看