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

DataInputStream和DataOutputStream是Java中常用的数据输入输出流,它们提供了一种用于串行化和反串行化基本java数据类型的方法。在处理二进制数据时,这两个类可以很好的对数据进行读和写操作。下面就来详细讲解这两个输入输出流的使用。

DataInputStream

DataInputStream是一种基于字节流的数据输入流。在使用DataInputStream前,需要使用FileInputStream或者ByteArrayInputStream创建一个输入源。使用DataInputStream的readXXX()方法可以读取字节序列,并将其转换为对应类型的Java数据类型。以下是读取操作的示例:

try(DataInputStream dis = new DataInputStream(new FileInputStream("test.dat"))){
    double d = dis.readDouble();
    int i = dis.readInt();
    boolean b = dis.readBoolean();
    String s = dis.readUTF();
    System.out.println(d + " " + i + " " + b + " " + s);
} catch(IOException e){
    e.printStackTrace();
}

上述代码中,读取的数据类型包括double、int、boolean和String。其中最后一个readUTF()方法是用于读取字符串类型的,读取时会先读取一个short类型的长度标记,然后再读取字符串数据。如果读取时碰到了数据块的EOF(End of File),那么DataInputStream其他的readXXX()方法都将会抛出EOFException异常。

DataOutputStream

DataOutputStream是一种基于字节流的数据输出流。使用DataOutputStream的writeXXX()方法可以将Java数据类型序列化为字节序列,并写入到输出流中。以下是一个写入示例:

try(DataOutputStream dos = new DataOutputStream(new FileOutputStream("test.dat"))){
    dos.writeDouble(3.1415926);
    dos.writeInt(100);
    dos.writeBoolean(true);
    dos.writeUTF("hello");
} catch(IOException e){
    e.printStackTrace();
}

上述代码将一个double、一个int、一个boolean和一个String类型的数据写入了流中。在输出时,DataOutputStream采用Java虚拟机默认的endianness,也就是当前系统的字节序。如果想要使用特定的字节序,可以使用DataOutputStream提供的writeXXXOptionEndian()方法。

结语

总之,DataInputStream和DataOutputStream是Java中二进制数据读写的好帮手。在处理二进制数据时,使用这两个类可以更加便捷和高效,同时也避免了手动进行二进制数据分析的困扰。如果在文件IO或网络IO中遇到了需要数据类型转换和序列化的场合,可以考虑使用这两个类来解决问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java的DataInputStream和DataOutputStream数据输入输出流 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Mybatis各种查询接口使用详解

    Mybatis各种查询接口使用详解 Mybatis是一款优秀的持久层框架,提供了不同的查询接口来满足各种复杂查询需求。本文将详细讲解Mybatis各种查询接口的使用方法。 基本查询 select 使用select查询数据非常简单,只需要在Mapper接口定义对应的方法,返回值为查询结果即可。 <!– Mapper.xml –> <sel…

    Java 2023年5月19日
    00
  • java 实现定时的方法及实例代码

    下面就给您详细介绍一下Java实现定时的方法及实例代码的完整攻略。 一、Java实现定时的方法 在Java中,可以使用多种方式实现定时器。下面是其中比较常用的几种方式: 1.1 Timer 类 Java中提供了一个java.util.Timer类,使用该类可以实现简单的定时任务调度。 Timer timer = new Timer(); timer.sche…

    Java 2023年5月18日
    00
  • Java Apache POI报错“IllegalStateException”的原因与解决办法

    “IllegalArgumentException”是Java的Apache POI类库中的一个异常,通常由以下原因之一引起: 参数错误:如果参数不正确,则可能会出现此异常。例如,可能会尝试使用错误的参数调用方法。 以下是两个实例: 例1 如果参数不正确,则可以尝试使用正确的参数以解决此问题。例如,在Java中,可以使用以下代码: FileInputStre…

    Java 2023年5月5日
    00
  • java与js代码互调示例代码

    当需要在Java与JavaScript之间进行代码互调时,可以使用Java在JavaScript中定义的函数来实现该功能。以下是使用Java代码在JavaScript中定义一个函数,并从JavaScript调用该函数的示例代码: 第一步是为Java代码编写一个类,在类中编写一个用于输出信息到控制台的函数: package com.example; publi…

    Java 2023年5月24日
    00
  • SpringMVC执行过程详细讲解

    以下是关于“SpringMVC执行过程详细讲解”的完整攻略,其中包含两个示例。 SpringMVC执行过程详细讲解 SpringMVC是一个基于M模式的Web框架,它可以帮助我们快速开发Web应用程序。本文将介绍SpringMVC的执行过程。 执行过程 SpringMVC的执行过程可以分为以下几个步骤: 客户端发送请求到DispatcherServlet。 …

    Java 2023年5月16日
    00
  • Spring引入外部属性文件配置数据库连接的步骤详解

    首先需要说明的是 Spring 引入外部属性文件配置数据库连接的过程非常简单,只需要遵循下面的几个步骤即可。 1. 创建属性文件 首先需要在项目的某个目录下创建一个属性文件,比如我们创建一个 db.properties 文件,用于存储数据库连接的相关信息,示例代码如下: jdbc.driver=com.mysql.jdbc.Driver jdbc.url=j…

    Java 2023年6月16日
    00
  • kotlin实战教程之lambda编程

    Kotlin实战教程之Lambda编程攻略 本教程将带领读者深入学习Kotlin中Lambda编程的知识点,并且提供实用的示例代码帮助读者快速掌握Lambda编程技巧。下面将从以下几个方面进行讲解: Lambda表达式的基本语法 Kotlin中Lambda表达式的使用 常用的Lambda函数 1. Lambda表达式的基本语法 Lambda表达式是一种匿名函…

    Java 2023年5月26日
    00
  • struts2静态资源映射代码示例

    下面是关于“struts2静态资源映射代码示例”的完整攻略。 什么是struts2静态资源映射? struts2有一个默认的静态资源映射器,会将静态资源(例如图片、CSS、JavaScript文件等)映射到web应用的根目录下,从而可以在浏览器中通过相对路径来访问。 但是,有时候我们需要将这些静态资源放到web应用的其他目录中,或者更改其访问路径,这时就需要…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部