java.io.DataInput接口和java.io.DataOutput接口详解
public interface DataInput
DataInput
接口用于从二进制流中读取字节,并重构所有 Java 基本类型数据。同时还提供根据 UTF-8 修改版格式的数据重构 String
的工具。
对于此接口中的所有数据读取例程来说,如果在读取到所需字节数的数据之前已经到达文件末尾 (end of file),则都将抛出 EOFException
(IOException
的一种)。如果因为文件末尾以外的其他原因无法读取字节,则抛出 IOException
而不是 EOFException
。尤其在输入流已关闭的情况下,将抛出 IOException
。
- 所有已知子接口:
- ImageInputStream, ImageOutputStream, ObjectInput
- 所有已知实现类:
- DataInputStream, FileCacheImageInputStream, FileCacheImageOutputStream, FileImageInputStream, FileImageOutputStream, ImageInputStreamImpl, ImageOutputStreamImpl, MemoryCacheImageInputStream, MemoryCacheImageOutputStream, ObjectInputStream, RandomAccessFile
方法详解:
boolean readBoolean() 读取一个输入字节,如果该字节不是零,则返回 true ,如果是零,则返回false 。此方法适用于读取用接口 DataOutput 的 writeBoolean 方法写入的字节。返回:读取的 boolean 值。 |
byte readByte() 读取并返回一个输入字节。此方法适用于读取用接口 DataOutput 的 writeByte 方法写入的字节。返回:读取的 8 位值。 |
char readChar() 读取一个输入的 char 并返回该 char 值。Unicode char 由两个字节组成。设 a 为第一个读取字节,b 为第二个读取字节。返回的值是: 返回:读取的 Unicode char 值。 |
double readDouble() 读取八个输入字节并返回一个 double 值。实现这一点的方法是:先使用与 readlong 方法完全相同的方式构造一个 long 值,然后使用与 Double.longBitsToDouble 方法完全相同的方式将此 long 值转换成一个 double 值。此方法适用于读取用接口 DataOutput 的 writeDouble 方法写入的字节。 |
float readFloat() 读取四个输入字节并返回一个 float 值。实现这一点的方法是:先使用与 readInt 方法完全相同的方式构造一个 int 值,然后使用与 Float.intBitsToFloat 方法完全相同的方式将此 int 值转换成一个 float 值。此方法适用于读取用接口 DataOutput 的 writeFloat 方法写入的字节。 |
void readFully(byte[] b) throws IOException, 从输入流中读取一些字节,并将它们存储到缓冲区数组 b 中。读取的字节数等于 b 的长度。如果 b 为 null ,则抛出 NullPointerException 。如果 b.length 为零,则不读取字节。否则,将读取的第一个字节存储到元素 b[0] 中,下一个字节存储到 b[1] 中,依此类推。如果此方法抛出异常,则可能是因为已经用输入流中的数据更新了 b 的某些(但非全部)字节。参数:b - 存储读取数据的缓冲区。 |
void readFully(byte[] b, int off, int len) 从输入流中读取 len 个字节。如果 b 为 null ,则抛出 NullPointerException 。如果 off 为负,或 len 为负,抑或 off+len 大于数组 b 的长度,则抛出 IndexOutOfBoundsException 。如果 len 为零,则不读取字节。否则,将读取的第一个字节存储到元素 b[off] 中,下一个字节存储到 b[off+1] 中,依此类推。读取的字节数至多等于 b[0] 。参数:b - 存储读取数据的缓冲区。off - 指定数据中的偏移量的 int。len - 指定读取的字节数的 int。 |
int readInt() 读取四个输入字节并返回一个 int 值。设 a 为第一个读取字节,b 为第二个读取字节,c 为第三个读取字节,d 为第四个读取字节。返回的值是: (((a & 0xff) << 24) | ((b & 0xff) << 16) |
返回:读取的 |
String readLine() 从输入流中读取下一文本行。该方法读取连续的字节,将每个字节分别转换成一个字符,直到遇到行结尾符或末尾;然后以 String 形式返回读取的字符。注意,因为此方法处理字符,所以它不支持整个 Unicode 字符集的输入。如果在一个字节都没有读取的时候就遇到文件末尾,则返回 null 。否则,通过左侧补零将读取的每个字节转换成 char 类型的值。如果遇到字符 '\n' ,则丢弃它并且停止读取。如果遇到字符 '\r' 则丢弃它,如果后续字节转变成字符 '\n' ,则同样丢弃,并且停止读取。如果在遇到字符 '\n' 和 '\r' 之一前遇到文件末尾,则停止读取。一旦已停止读取,则返回一个 String ,它按顺序包含所有已读取且未丢弃的字符。注意,此字符串中的每个字符的值都将小于 \u0100 (即 (char)256 )的值。 |
long readLong() 读取八个输入字节并返回一个 long 值。设 a 为第一个读取字节,b 为第二个读取字节,c 为第三个读取字节,d 为第四个读取字节,e 为五个读取字节,f 为第六个读取字节,g 为第七个读取字节,h 为第八个读取字节。返回的值是:
|
short readShort() 读取两个输入字节并返回一个 short 值。设 a 为第一个读取字节,b 为第二个读取字节。返回的值是:(short)((a << 8) | (b & 0xff))
此方法适用于读取用接口 |
int readUnsignedByte() 读取一个输入字节,将它左侧补零 (zero-extend) 转变为 int 类型,并返回结果,所以结果的范围是 0 到 255 。如果接口 DataOutput 的 writeByte 方法的参数是 0 到 255 之间的值,则此方法适用于读取用 writeByte 写入的字节。 返回:读取的无符号 8 位值。 |
int readUnsignedShort() 读取两个输入字节,并返回 0 到 65535 范围内的一个int 值。设 a 为第一个读取字节,b 为第二个读取字节。返回的值是: 返回:读取的无符号 16 位值。 |
String readUTF() 读入一个已使用 UTF-8 修改版格式编码的字符串。 |
int skipBytes(int n) throws IOException 试图在输入流中跳过数据的 n 个字节,并丢弃跳过的字节。不过,它可以跳过更少的字节数,该字节数甚至可能为零。这可能由很多情况引起;在已经跳过 n 个字节前到达文件末尾只是其中的一种可能。此方法从不抛出 EOFException 。返回实际跳过的字节数。 参数:n - 要跳过的字节数。返回:实际跳过的字节数。 |
public interface DataOutput
DataOutput
接口用于将任意 Java 基本类型转换为一系列字节,并将这些字节写入二进制流。同时还提供了一个将String
转换成 UTF-8 修改版格式并写入所得到的系列字节的工具。
对于此接口中写入字节的所有方法,如果由于某种原因无法写入某个字节,则抛出 IOException
。
- 所有已知子接口:
- ImageOutputStream, ObjectOutput
- 所有已知实现类:
- DataOutputStream, FileCacheImageOutputStream, FileImageOutputStream, ImageOutputStreamImpl, MemoryCacheImageOutputStream, ObjectOutputStream, RandomAccessFile
- 方法摘要:
-
void write(byte[] b)
将数组b
中的所有字节写入输出流。如果b
为null
,则抛出NullPointerException
。如果b.length
为零,则不写入字节。否则,首先写入字节b[0]
,然后写入字节b[1]
,依此类推;最后一个写入字节是b[b.length-1]
。void write(byte[] b, int off, int len)
将数组b
中的len
个字节按顺序写入输出流。如果b
为null
,则抛出NullPointerException
。如果off
为负,或len
为负,抑或off+len
大于数组b
的长度,则抛出IndexOutOfBoundsException
。如果len
为零,则不写入字节。否则,首先写入字节b[off]
,然后写入字节b[off+1]
,依此类推;最后一个写入字节是b[off+len-1]
。 参数:b
- 数据。off
- 数据中的起始偏移量。len
- 要写入的字节数。void write(int b)
将参数b
的八个低位写入输出流。忽略b
的 24 个高位。void writeBoolean(boolean v)
将一个boolean
值写入输出流。如果参数v
为true
,则写入值(byte)1
;如果v
为false
,则写入值(byte)0
。此方法写入的字节可由DataInput
接口的readBoolean
方法读取,然后该方法将返回一个等于v
的boolean
值。void writeByte(int v)
将参数v
的八个低位写入输出流。忽略v
的 24 个高位。(这意味着writeByte
的作用与使用整数做参数的write
完全相同。)此方法写入的字节可由DataInput
接口的readByte
方法读取,然后该方法将返回一个等于(byte)v
的byte
值。void writeBytes(String s)
将一个字符串写入输出流。字符串s
中的每一个字符被依次写入输出流,每个字符用一个字节表示。如果s
为null
,则抛出NullPointerException
。如果
s.length
为零,则不写入字节。否则,首先写入字符s[0]
,然后写入字符s[1]
,依此类推;最后一个写入字符是s[s.length-1]
。使用与writeByte
方法完全相同的方法为每个字符写入一个低位字节。忽略字符串中每个字符的八个高位。void writeChar(int v)
将一个char
值写入输出流,该值由两个字节组成。void writeChars(String s)
将字符串s
中的所有字符按顺序写入输出流,每个字符用两个字节表示。如果s
为null
,则抛出NullPointerException
。如果s.length
为零,则不写入字符。否则,首先写入字符s[0]
,然后写入字符s[1]
,依此类推;最后一个写入字符是s[s.length-1]
。使用与writeChar
方法完全相同的方法为每个字符实际写入两个字节,先使用高位字节。void writeDouble(double v)
将一个double
值写入输出流,该值由八个字节组成。void writeFloat(float v)
将一个float
值写入输出流,该值由四个字节组成。void writeInt(int v)
将一个int
值写入输出流,该值由四个字节组成。void writeLong(long v)
将一个long
值写入输出流,该值由八个字节组成。void writeShort(int v)
将两个字节写入输出流,用它们表示参数值。void writeUTF(String str)
将表示长度信息的两个字节写入输出流,后跟字符串s
中每个字符的 UTF-8 修改版表示形式。
java.io.DataInput接口和java.io.DataOutput接口详解的更多相关文章
- Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解
Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解 说明:Java生鲜电商平台-APP/小程序接口传输常见的加密算法及详解,加密算法,是现在每个软件项目里必须用到的内容. 广泛应用在包括 ...
- I/O模型之二:Linux IO模式及 select、poll、epoll详解
目录: <I/O模型之一:Unix的五种I/O模型> <I/O模型之二:Linux IO模式及 select.poll.epoll详解> <I/O模型之三:两种高性能 I ...
- 利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解
本文转载自利用 Java 操作 Jenkins API 实现对 Jenkins 的控制详解 导语 由于最近工作需要利用 Jenkins 远程 API 操作 Jenkins 来完成一些列操作,就抽空研究 ...
- 《手把手教你》系列技巧篇(二十七)-java+ selenium自动化测试- quit和close的区别(详解教程)
1.简介 尽管有的小伙伴或者童鞋们觉得很简单,不就是关闭退出浏览器,但是宏哥还是把两个方法的区别说一下,不然遇到坑后根本不会想到是这里的问题. 2.源码 本文介绍webdriver中关于浏览器退出操作 ...
- Java NIO 的前生今世 之四 NIO Selector 详解
Selector Selector 允许一个单一的线程来操作多个 Channel. 如果我们的应用程序中使用了多个 Channel, 那么使用 Selector 很方便的实现这样的目的, 但是因为在一 ...
- 网络通信 --> IO多路复用之select、poll、epoll详解
IO多路复用之select.poll.epoll详解 目前支持I/O多路复用的系统调用有 select,pselect,poll,epoll,I/O多路复用就是通过一种机制,一个进程可以监视 ...
- (转)java之Spring(IOC)注解装配Bean详解
java之Spring(IOC)注解装配Bean详解 在这里我们要详细说明一下利用Annotation-注解来装配Bean. 因为如果你学会了注解,你就再也不愿意去手动配置xml文件了,下面就看看 ...
- 史上!最最最简洁明了的 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳
Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...
- 深入浅出 Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳
Java JDK 安装目录及其子目录含义 10分钟详解 - 精简归纳 JERRY_Z. ~ 2020 / 8 / 30 转载请注明出处!️ 目录 Java JDK 安装目录及其子目录含义 10分钟详解 ...
- 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ...
随机推荐
- opencv的高斯混合模型
http://blog.jasonding.top/2015/04/05/Machine%20Learning/%E3%80%90%E8%AE%A1%E7%AE%97%E6%9C%BA%E8%A7%8 ...
- SqlServer基础:约束
为了减少输入错误和保证数据库数据的完整性,可以对字段设置约束,例如考试成绩,其范围应该为0-100.约束是为了保证数据的完整性而实现的一套机制,约束包括:主键约束.外键约束.Unique约束.Chec ...
- vb和php 基于socket通信
php代码(页面代码非cmd命令脚本) <?php $server = '127.0.0.1'; $port = 8888; $socket = socket_create(AF_INET, S ...
- MVC项目实践,在三层架构下实现SportsStore-09,ASP.NET MVC调用ASP.NET Web API的查询服务
ASP.NET Web API和WCF都体现了REST软件架构风格.在REST中,把一切数据视为资源,所以也是一种面向资源的架构风格.所有的资源都可以通过URI来唯一标识,通过对资源的HTTP操作(G ...
- android 检查网络连接状态实现步骤
获取网络信息需要在AndroidManifest.xml文件中加入相应的权限. <uses-permission android:name="android.permission.AC ...
- Swagger简介
前言 Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件.本文简单介绍了在项目中集成swagger的方法和一些常见问题.如果想深入分析项目源码,了解更多内容,见参考资料. S ...
- Install .NET Framework 4.5.2 on a Cloud Service Role
October Guest OS rollout is starting today October 15 2015, and projected to be released on November ...
- throw 子句
throws是声明方法时抛出可能出现的异常,但不能捕获异常,也就是说并不直接处理异常,而是把它向上传递.其格式如下: 方法声明 throws 异常类名列表 若一个方法声明抛出异常,则表示该方法可能会抛 ...
- subprocess使用
1. Popen使用 test = subprocess.Popen('ls /tmpa', shell=True, stdout = subprocess.PIPE, stderr=subproce ...
- JAVA的String 类
String类 1.String对象的初始化 由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如下: String s = “abc”; s ...