`
xyheqhd888
  • 浏览: 410879 次
  • 性别: 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资源

相关推荐

    实验3 输入输出流的实验.doc

    本实验主要介绍了 Java 中的输入输出流,包括 DataInputStream、DataOutputStream、PrintStream 等类的使用,以及对象的序列化和反序列化。通过实验,我们可以掌握流的概念分类、字符串常用操作方法、流的构造和应用...

    java DataInputStream和DataOutputStream详解及实例代码

    Java中的`DataInputStream`和`DataOutputStream`是用于处理基本数据类型流的类,它们都位于`java.io`包中。这两个类是为了解决在进行网络通信或磁盘存储时,需要高效、有序地读写Java基本数据类型的问题。 `...

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

    在Java的I/O系统中,`DataInputStream`和`DataOutputStream`以及`FilterStream`是处理数据输入和输出的关键类,它们对于程序的文件操作和网络通信起着至关重要的作用。本教程将深入讲解这些类的功能、用法以及它们在...

    Java中使用数据输入输出流实现字符串加解密的代码清单.pdf

    总结来说,Java中的DataInputStream和DataOutputStream类是处理原始数据输入输出的关键工具。在上述代码示例中,它们被用来实现简单的字符串加解密和文件操作,但在实际应用中,通常会结合更复杂的加密算法和安全...

    Java网络编程实验报告.pdf

    DataInputStream 和 DataOutputStream 类是Java 网络编程中用于实现数据的输入和输出的类。DataInputStream 类用于从流中读取基本类型的数据,DataOutputStream 类用于将基本类型的数据写入流中。 知识点6:多线程...

    Java读存二进制大文件块

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

    Java 网络通信程序设计

    在 ChatClient.java 中,我们使用 DataInputStream 和 DataOutputStream 类来读取和写入数据。 4. 线程 线程是指在程序中使用多线程来实现并发执行的技术。Java 语言提供了 Thread 类来实现这种技术。Thread 类...

    JAVA学习笔记4

    - tkSocket.java中服务端代码使用了DataOutputStream和DataInputStream来进行数据的发送和接收。服务端首先监听9999端口,等待客户端的连接。当连接建立后,服务端会发送数据,并接收客户端回传的数据。 Eclipse...

    2022年Java中基本数据类型与流Java教程.docx

    在处理数据输入和输出时,Java提供了DataInputStream和DataOutputStream类,这两个类主要用于将基本数据类型和字符串在字节流中进行读写操作。它们分别实现了DataInput和DataOutput接口,这两个接口定义了一系列方法...

    java文件流

    在 Java 中,还可以使用 DataInputStream 和 DataOutputStream 类来读写文件。这些类可以用于读写基本类型的数据,如 int、double 等。 文件操作——使用 BUFFEREDREADER 和 PRINTWRITER 类以字符方式读写文件 在 ...

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

    在Java编程语言中,`DataInputStream`和`DataOutputStream`是用于处理基本数据类型的输入输出操作的类。这两个类在处理二进制数据时非常有用,因为它们提供了以机器无关的方式来读取和写入基本Java数据类型的方法。...

    javaIo与流 读写文件

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

    java.读写文本与二进制文件.md

    DataInputStream和DataOutputStream类可以读取和写入Java数据类型,比如int、float、double等基本类型。在读取二进制文件时,需要先确定文件的大小,然后创建一个相应大小的byte数组来接收数据。DataInputStream的...

    输入输出与文件处理

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

    Java数据输入输出流.pdf

    本文将深入探讨DataInputStream和DataOutputStream这两个类以及它们所关联的DataInput和DataOutput接口。 DataInputStream和DataOutputStream是Java.io包中的两个核心类,它们都是FilterInputStream和...

    java程序socket编程示例代码

    * DataInputStream和DataOutputStream类用于读取和写入数据。 * 通过使用TCP Socket,我们可以实现客户机和服务器端之间的可靠通信。 应用场景 Java程序socket编程有很多应用场景,如: * 实现客户机和服务器端...

    Java聊天室_javasocket_java聊天_聊天室_

    在Java中,可以使用DataInputStream和DataOutputStream类来读写二进制数据。客户端将图片文件转换为字节数组,通过Socket发送到服务器,服务器接收到后再转发给指定的接收者。同时,为了保证图片质量,需要考虑压缩...

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

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

    Java实现基于TCPIP协议的网络通信程序

    - **DataInputStream和DataOutputStream类**:提供了对基本数据类型的读写支持,使得数据传输更加方便和安全。 此外,Java还提供了**多线程机制**来处理并发连接,这对于提高服务器的响应能力和处理能力至关重要。...

    经典j2me视频播放器代码.rar

    J2ME中的DataInputStream和DataOutputStream类可以帮助读写这些数据流。 4. **线程管理**: 在J2ME中,由于资源限制,线程管理尤为重要。视频播放可能在一个后台线程中进行,以免阻塞UI主线程,保证用户体验。 5. *...

Global site tag (gtag.js) - Google Analytics