《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一2.3.1 DataInput和DataOutput接口

简介: 本节书摘来华章计算机《Java核心技术 卷Ⅱ 高级特性(原书第10版)》一书中的第2章 ,第2.3.1节,[美] 凯S.霍斯特曼(Cay S. Horstmann) 著陈昊鹏 译 更多章节内容可以访问云栖社区“华章计算机”公众号查看。

2.3.1 DataInput和DataOutput接口

DataOutput接口定义了下面用于以二进制格式写数组、字符、boolean值和字符串的方法:
image

例如,writeInt总是将一个整数写出为4字节的二进制数量值,而不管它有多少位,writeDouble总是将一个double值写出为8字节的二进制数量值。这样产生的结果并非人可阅读的,但是对于给定类型的每个值,所需的空间都是相同的,而且将其读回也比解析文本要更快。

注意:根据你所使用的处理器类型,在内存存储整数和浮点数有两种不同的方法。例如,假设你使用的是4字节的int,如果有一个十进制数1234,也就是十六进制的4D2(1234 = 4×256 + 13×16 + 2),那么它可以按照内存中4字节的第一个字节存储最高位字节的方式来存储为:00 00 04 D2,这就是所谓的高位在前顺序(MSB);我们也可以从最低位字节开始:D2 04 00 00,这种方式自然就是所谓的低位在前顺序(LSB)。例如,SPARC使用的是高位在前顺序, 而Pentium使用的则是低位在前顺序。这就可能会带来问题,当存储C 或者C++文件时,数据会精确地按照处理器存储它们的方式来存储,这就使得即使是最简单的数据在从一个平台迁移到另一个平台上时也是一种挑战。在Java中,所有的值都按照高位在前的模式写出,不管使用何种处理器,这使得Java数据文件可以独立于平台。

writeUTF方法使用修订版的8位Unicode转换格式写出字符串。这种方式与直接使用标准的UTF-8编码方式不同,其中,Unicode码元序列首先用UTF-16表示,其结果之后使用UTF-8规则进行编码。修订后的编码方式对于编码大于0xFFFF的字符的处理有所不同,这是为了向后兼容在Unicode还没有超过16位时构建的虚拟机。
因为没有其他方法会使用UTF-8的这种修订,所以你应该只在写出用于Java虚拟机的字符串时才使用writeUTF方法,例如,当你需要编写一个生成字节码的程序时。对于其他场合,都应该使用writeChars方法。
为了读回数据,可以使用在DataInput接口中定义的下列方法:
image

DataInputStream类实现了DataInput接口,为了从文件中读入二进制数据,可以将DataInputStream与某个字节源相组合,例如FileInputStream:
image

与此类似,要想写出二进制数据,你可以使用实现了DataOutput接口的DataOutput- Stream类:
image

image
image

相关文章
|
3天前
|
Java 开发者
Java中的Lambda表达式与函数式接口
【2月更文挑战第3天】传统的面向对象编程语言在处理函数式编程方面存在一定的局限性,而Java 8 引入了Lambda 表达式和函数式接口的概念,极大地提升了语言的灵活性和表达能力。本文将介绍Lambda 表达式和函数式接口在Java 中的基本概念、用法以及与传统面向对象编程的区别,帮助读者更好地理解并应用这些新特性。
|
3天前
|
存储 安全 Java
Java Map接口及其常用实现类详解
Java Map接口及其常用实现类详解
|
3天前
|
算法 安全 前端开发
Java Queue接口及其常用实现类分析
Java Queue接口及其常用实现类分析
|
3天前
|
存储 Java 索引
Java Set接口及其常用实现类详解
Java Set接口及其常用实现类详解
|
3天前
|
存储 安全 Java
深入解析Java List接口及其实现类
深入解析Java List接口及其实现类
|
3天前
|
存储 安全 Java
Java集合框架概述:体系结构与核心接口
Java集合框架概述:体系结构与核心接口
|
6天前
|
Java
java 实现Comparable接口排序,升序、降序、倒叙
java 实现Comparable接口排序,升序、降序、倒叙
9 0
|
21天前
|
Java 程序员
【Java SE语法篇】9.抽象类和接口
【Java SE语法篇】9.抽象类和接口
|
21天前
|
缓存 前端开发 Java
java项目接口重复提交解决方案
java项目接口重复提交解决方案
18 0
|
23天前
|
Java 开发者
JDK 9新特性探秘:接口中的私有方法
本文旨在探讨Java Development Kit 9(JDK 9)为Java接口引入的新特性——私有方法。在JDK 9之前,接口只能包含公共的抽象方法和常量。然而,随着Java的不断发展,接口中需要更加灵活的方式来处理复杂性和代码重用。因此,JDK 9引入了私有方法,允许开发者在接口内部定义私有方法和私有静态方法,从而提高了代码的模块性和可维护性。本文将详细介绍这一新特性的使用方法、应用场景及其对Java编程的影响。