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

  • 相关阅读:
    Linux文件系统_每一个的意义
    Linux启动的流程
    Linux
    awk编程
    Junit测试Controller(MockMVC使用),传输@RequestBody数据解决办法
    spring boot get和post请求,以及requestbody为json串时候的处理
    Spring Boot快速入门
    Spring Boot 实用MyBatis做数据库操作
    极简操作无需root隐藏S8导航栏和状态栏
    springboot(三):Spring boot中Redis的使用
  • 原文地址:https://www.cnblogs.com/keyi/p/7193778.html
Copyright © 2011-2022 走看看