`
xyheqhd888
  • 浏览: 403686 次
  • 性别: Icon_minigender_1
  • 来自: 秦皇岛
社区版块
存档分类
最新评论

DataInputStream和DataOutputStream类

 
阅读更多

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

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对象。下面的代码简单示范了如何实现这个需求。

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

分享到:
评论
2 楼 prayjourney 2016-04-13  
了解了,讲的不错
1 楼 百合不是茶 2014-05-27  
你的程序在文件输入输出流中传入agrs[0]时,会报错越界   ,在程序中我创建了两个文件对象分别传入其中 也会报错找不到UTF资源

相关推荐

    Java的DataInputStream和DataOutputStream数据输入输出流

    里我们来看一下Java的DataInputStream和DataOutputStream数据输入输出流的使用示例,两个类分别继承于FilterInputStream和FilterOutputStream:

    java DataInputStream和DataOutputStream详解及实例代码

    主要介绍了java DataInputStream和DataOutputStream详解及实例代码的相关资料,需要的朋友可以参考下

    【IT十八掌徐培成】Java基础第16天-05.DataInputStream-DataOutputStream-FilterStream.zip

    【IT十八掌徐培成】Java基础第16天-05.DataInputStream-DataOutputStream-FilterStream.zip

    Java读存二进制大文件块

    本例演示了如何自定义缓存区,并使用不具有缓冲功能的DataInputStream 和DataOutputStream 类来读写大块的数据文件。效果如图所示,当按下“Start”按钮后,程序从源文件“d:\image.jpg”读取指定大小(缓冲区的大小...

    java入门之io包

    运用File类进行文件操作 理解流,标准输入/输出流的概念 运用FileInputStream和FileOutputStream类读写文本文件 运用BufferedReader和BufferedWriter类读写...运用DataInputStream和DataOutputStream类 读写二进制文件

    javaIo与流 读写文件

    1、在读写文件时必须的 2、File类 3、流 4、读写文件 运用FileInputStream和FileOutputStream类读写文本文件 运用BufferedReader和BufferedWriter类读写文本...运用DataInputStream和DataOutputStream类读写二进制 文件

    java学习SWING

    SWING-III.pptJava学习资料 运用File类进行文件操作 理解流,标准输入/输出流的概念 运用FileInputStream和FileOutputStream类读写文本文件 ...运用DataInputStream和DataOutputStream类 读写二进制文件

    输入输出与文件处理

    (1) 理解流式输入输出的基本原理。...(2) 掌握DataInputStream和DataOutputStream类的使用方法。 (3) 掌握File、FileInputStream、FileOutputStream类的使用方法。 (4) 掌握RandomAccessFile类的使用方法。

    Java读取和写入二进制大文件的方法.rar

    Java读取和写入二进制大文件的方法,应该说是一个基于二进制的大文件块,演示了如何自定义缓存区,并使用不具有缓冲功能的DataInputStream 和DataOutputStream 类来读写二进制的大文件块数据,运行效果请参见如下...

    bytestreamdemo.zip

    java IO 字节流练习代码 FileInputStream和FileOutputStream BufferedInputStream 和 ...DataInputStream 和 DataOutputStream ObjectInputStream和ObjectOutputStream PrintStream PushbackInputStream

    JAVA_输入输出及数据库操作.ppt

    7.1.1 流的含义 7.1.2 流的层次结构 7.1.3 标准输入输出 7.1.4 File类 ...7.1.6 DataInputStream类和DataOutputStream类 7.1.7 随机访问文件 7.1.8 Reader类和Writer类 7.1.9 IOException类的几个子类

    wangluobiancheng

    过滤流DataInputStream 和DataOutputStream 除了分别作为FilterInputStream 和FilterOutputStream的子类外,还分别实现了接口DataInput 和DataOutput。接口DataInput 中定义的方法主要包括从流中读取基本类型的数据

    java IO流读写

    1.DataInputStream,DataOutputStream 从Stream里读取基本类型的数据 BufferedReader,BufferedWriter 从Reader/Writer里读取基本类型的数据 2.BufferedInputStream,BufferedOutputStream 封装了从缓冲区读写指定...

    Java RandomAccessFile用法

    实际上,除了实现DataInput和 DataOutput接口之外(DataInputStream和DataOutputStream也实现了这两个接口),它和这两个类系毫不相干,甚至不使用InputStream和OutputStream类中已经存在的任何功能;它是

    java io包课件

    了解java.io包 运用File类对文件或目录的属性进行操作 理解流,理解输入/输出流的概念 运用FileInputStream类和FileOutputStream类读/写字节文件 ...运用DataInputStream类和DataOutputStream类读写数据文件

    socket通讯

    1.服务端Java(MyServer)/客户端Android(SocketTest); 2.数据流DataInputStream、DataOutputStream; 3.注意测试时手机端和服务器端应处于同一网段。

    javascript 二进制操作

    用JAVASCRIPT操作二进制数据,把它们变成16进制字符串。也可以把字符串变回二进制。还有按ieee-754标准读写INT,FLOAT等数据类型,和DataInputStream/DataOutputStream非常相似.

    Java中基本数据类型与流

    说到Java的基本数据类型必须谈到的两个类是DataInputStream和DataOutputStream。它们提供了对Java基本数据类型的操作,但是这些方法事实上是在两个重要的接口中定义的DataInput和DataOutput,它们的功能就是把二...

    Little Endian Java Data Streams-开源

    Java的DataInputStream和DataOutputStream的低端版本。

Global site tag (gtag.js) - Google Analytics