DataInputStream 是用来装饰其它输入流,它允许应用程序以与机器无关方式从底层输入流中读取基本 Java 数据类型。
要想使用数据输入流,则肯定要用户指定数据的保存格式。必须按指定的格式保存数据,才可以将数据输入流将数据读取进来。

一、继承关系与初始化方式

二、方法列举

读取方法一:

int read(byte b[]):从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组 b 中。
(检测到文件末尾 (end of file) 或抛出异常之前,此方法将一直阻塞。)int read(byte[] b, int off, int len):从包含的输入流中将最多 len 个字节读入一个 byte 数组中。

读取方法二:

boolean readBoolean():读取一个输入字节,如果该字节不是零,则返回 true,如果是零,则返回 false。
byte readByte():读取并返回一个输入字节
char readChar():读取两个输入字节并返回一个 char 值
double readDouble():读取八个输入字节并返回一个 double 值
float readFloat():读取四个输入字节并返回一个 float 值
int readInt():读取四个输入字节并返回一个 int 值。
long readLong():读取八个输入字节并返回一个 long 值。
short readShort():读取两个输入字节并返回一个 short 值。void readFully(byte[] b):从输入流中读取一些字节,并将它们存储在缓冲区数组 b 中(读取的字节数等于 b 的长度)
(要是超过则会抛出异常)
void readFully(byte[] b, int off, int len): 从输入流中读取 len 个字节。int readUnsignedByte():
读取一个输入字节,将它左侧补零,转变为int类型,并返回结果(结果的范围是 0 到 255)
(读取无符号byte类型的值)int readUnsignedShort():读取两个输入字节,并返回 0 到 65535 范围内的一个 int 值。
(读取无符号的short类型的值)String readUTF():读取UTF类型的值(一般要和 writeUTF() 方法配套使用)否则会抛出异常
static String readUTF(DataInput in): 从流 in 中读取用 UTF-8 修改版格式编码的 Unicode 字符格式的字符串;然后以 String 形式返回此字符串。

上述读取方法中,如果已经达到文件末尾,则抛出异常EOFException

跳过字节方法:

int skipBytes(int n):试图在输入流中跳过数据的 n 个字节,并丢弃跳过的字节。
三、注意

DataInputStream的所有方法都是被final所修饰的

DataInputStream的作用就是专门用来读各种各样的数据的
它需要和DataOutputStream配套使用

readUTF方法详解参考此链接DataInputStream介绍

四、应用
  • 先写入数据
public class DataOutputStreamDemo {public static void main(String[] args) throws IOException {//创建数据字节输出流DataOutputStream dos = new DataOutputStream(new FileOutputStream("C:\\Users\\lo\\Desktop\\test.txt"));//写入数据byte b = 5;short s = 10;long l = 100L;char c = 'a';dos.writeByte(b);dos.writeShort(s);dos.writeLong(l);dos.writeChar(c);dos.writeUTF("罗志祥");//关闭dos.close();}
}
  • 读数据
public class DataInputDemo {public static void main(String[] args) throws IOException {String path =  "C:\\Users\\lo\\Desktop\\test.txt";FileInputStream fis = new FileInputStream(path);//创建流DataInputStream dis  = new DataInputStream(fis);//读取byte b = dis.readByte();short s = dis.readShort();long l = dis.readLong();char c = dis.readChar();String s1 = dis.readUTF();System.out.println(b);System.out.println(s);System.out.println(l);System.out.println(c);System.out.println(s1);//关闭流dis.close();}
}

注意:读的时候必须和写进去数据的类型一致,否则会出错

DataInputStream、readUTF方法详解相关推荐

  1. python统计csv行数_对Python 多线程统计所有csv文件的行数方法详解

    如下所示: #统计某文件夹下的所有csv文件的行数(多线程) import threading import csv import os class MyThreadLine(threading.Th ...

  2. python修改文件内容_Python批量修改文本文件内容的方法详解

    这篇文章主要介绍了Python批量修改文本文件内容的方法的相关资料,需要的朋友可以参考下 Python批量替换文件内容,支持嵌套文件夹 import os path="./" fo ...

  3. python二维元组_python中读入二维csv格式的表格方法详解(以元组/列表形式表示)

    如何去读取一个没有表头的二维csv文件(如下图所示)? 并以元组的形式表现数据: ((1.0, 0.0, 3.0, 180.0), (2.0, 0.0, 2.0, 180.0), (3.0, 0.0, ...

  4. Spring JdbcTemplate方法详解

    2019独角兽企业重金招聘Python工程师标准>>> Spring JdbcTemplate方法详解 标签: springhsqldbjava存储数据库相关sql 2012-07- ...

  5. golang 解析php序列化,golang实现php里的serialize()和unserialize()序列和反序列方法详解...

    Golang 实现 PHP里的 serialize() . unserialize() 安装 go get -u github.com/techleeone/gophp/serialize 用法 pa ...

  6. ES5和ES6数组遍历方法详解

    ES5和ES6数组遍历方法详解 在ES5中常用的10种数组遍历方法: 1.原始的for循环语句 2.Array.prototype.forEach数组对象内置方法 3.Array.prototype. ...

  7. linux expect 输入密码,shell脚本无密码登录 expect的使用方法详解

    shell脚本无密码登录 expect的使用方法详解 今天需要做一个定时任务脚本将最新的数据包文件传到远程的服务器上,虽然有密钥但也是要求输入密码的那种,所以只能另想办法实现让脚本自动输入密码了. 从 ...

  8. 饥荒怎么自动订阅服务器,饥荒联机版自动挂礼物mod及使用方法详解

    饥荒联机版中官方经常会推出一些挂机掉落礼物的活动,可能一些玩家会觉得很麻烦,下面给大家分享一些自动挂礼物mod和其使用方法,希望可以帮助到各位玩家. 饥荒联机版自动挂礼物mod及使用方法详解 挂礼物m ...

  9. linux oracle 用户创建,LINUX下Oracle数据库用户创建方法详解

    本文实例分析了LINUX下Oracle数据库用户创建方法.分享给大家供大家参考,具体如下: 1)登录linux,以oracle用户登录(如果是root用户登录的,登录后用 su - oracle命令切 ...

最新文章

  1. tf.nn.embedding_lookup()的用法
  2. 动态规划——最大子矩阵(hdu1081)
  3. 服务器搭建对讲机系统,传统对讲机系统如何接入到融合通信系统?
  4. 8.9. 最大连续子段和,以及循环最大连续子段和。
  5. Angular2开发拙见——组件规划篇
  6. 视频图像标准:D1/D2/D3/D4/D5
  7. [3-6] xp系统主题下载最新xp系统软件更新 [yeskm整理]
  8. 微信小程序之海报生成
  9. CAJ论文怎么打开?
  10. 锂离子电池种类介绍和分类
  11. android第三方apk找不到/system/lib64/里面的系统库
  12. ubuntu下安装wps出现系统缺失字体问题?
  13. 【学习】大数据关键技术
  14. matlab中的四种取整函数的使用(fix, floor, ceil, round)
  15. 氢os关闭android键盘,氢OS11到来前,先听听这些一加用户对氢OS的吐槽
  16. 分销系统|分销商城小程序开发方式有什么?
  17. 子网掩码,CIDR前缀法表示掩码
  18. java实现Unicode编码和可读字符互转
  19. matlab图像拼接融合(四种方法)
  20. yii2框架-yii2的组件和服务定位器(四)

热门文章

  1. 荣耀猎人游戏本V700实测 它才是玩家唯一真爱
  2. 黑马程序员|C++教程(56 指针-指针的定义和使用_)
  3. 易优cms基于thinkphp5开发cms系统
  4. 计算机基础教学改革申报书,混合教学试点课程改革项目申报书-《计算机文化基础》...
  5. 收支科目不为零_管理费用,收入,成本,为什么期末余额为零?
  6. amp;quot;等java转义
  7. LabVIEW控制电脑关机、休眠、注销和重启
  8. Object.assign的用法
  9. 深圳Java培训:5分钟了解希尔排序
  10. 从NOIP到IOI ,信息学竞赛之路