数据流:

接口 DataInput 和 DataOutput,设计了一种较为高级的数据输入输出方式:除了可处理字节和字节数组外,还可以处理 int、float、boolean等基本数据类型,这些数据在文件中的表示方式和它们在内存中的一样,无须转换,如 read(), readInt(), readByte()...; write(), writeChar(), writeBoolean()...此外,还可以用 readLine()方法读取一行信息。

方法:

方法 返回值 说明
readBoolean() boolean
readByte() byte
readShort() short
readChar() char
readInt() int
readLong() long
readDouble() double
readFloat() float
readUnsignedByte() int
readUnsignedShort() int
readFully(byte[] b) void 读满字节数组,不同于 InputStream。read
reaFully(byte[] b, int off,int len) void 读满指定长度,不同于 InputStream.read
skipBytes(int n) int 与 InputStream.skip 等价
readUTF() String 安装 UTF-8 形式从输入中读取字符串
readLine() String 按回车(\r)换行(\n)为分割符读取一行字符串,不完全支持 UNICODE
writeBoolean(boolean v) void
writeByte(int v) void
writeShort(int v) void
writeChar(int v) void
writeInt(int v) void
writeLong(long v) void
writeFloat(float v) void
writeDouble(double v) void
write(byte[] b) void 与 OutputStream.write 同义
write(byte[] b, int off, int len) void 与OutputStream.write 同义
write(int b) void 与OutputStream.write 同义
writeBytes(String s) void 只输出每个字符的低8位;不完全支持 UNICODE
writeChars(String s) void 每个字符在输出中都占两个字节

  数据流类 DateInputStream 和 DataOutputStream 的处理对象除了是字节或字节数组外,还可以实现对文件的不同数据类型的读写:

  1. 分别实现了 DataInput 和 DataOutput 接口
  2. 在提供字节流的读写手段同时,以统一的形式向输入流中写入 boolean,int,long,double 等基本数据类型,并可以再次把基本数据类型的值读取回来。
  3. 提供了字符串读写的手段

  数据流可以连接一个已经建立好的数据对象,例如网络连接、文件等。数据流可以通过如下方式建立:

FileInputStream fis = new FileInputStream("file1.txt");
FileOutputStream fos = new FileOutputStream("file2.txt");
DataInputStream dis = new DataInputStream(fis);
DataOutputStream dos = new DataOutputStream(fos);

接下来我们通过具体的代码,看一看它的用法吧:

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;public class DataStream {public static void main(String[] args) throws IOException{// TODO Auto-generated method stub//向文件 a.txt 写入FileOutputStream fos = new FileOutputStream("a.txt");DataOutputStream dos = new DataOutputStream(fos);try {dos.writeBoolean(true);dos.writeByte((byte)123);dos.writeChar('J');dos.writeDouble(3.1415926);dos.writeFloat(2.122f);dos.writeInt(123);}finally {dos.close();}//从文件 a.txt 读出FileInputStream fis = new FileInputStream("a.txt");DataInputStream dis = new DataInputStream(fis);try {System.out.println("\t" + dis.readBoolean());System.out.println("\t" + dis.readByte());System.out.println("\t" + dis.readChar());System.out.println("\t" + dis.readDouble());System.out.println("\t" + dis.readFloat());System.out.println("\t" + dis.readInt());}finally {dis.close();}}}

转载于:https://www.cnblogs.com/silianbo/p/4666432.html

Java IO ---学习笔记(数据流)相关推荐

  1. Java IO学习笔记总结

    Java IO学习笔记总结 前言 前面的八篇文章详细的讲述了Java IO的操作方法,文章列表如下 基本的文件操作 字符流和字节流的操作 InputStreamReader和OutputStreamW ...

  2. Java IO学习笔记(四)打印流

    1.只有输出流才有打印流:PrintWriter和PrintStream分别针对字符和字节,提供了重载的print,Println方法用于多种数据类型的输出.PrintWriter和PrintStre ...

  3. Java IO学习笔记四

    内存操作流 之前的所有的流操作都是针对文件的,但是有时候只是想要实现数据间转换,此时如果我们想要创建一个文件然后再删除文件,那样显得有点麻烦,因此此时的内存操作流就显得很适合这类的操作,因为它只是在内 ...

  4. 尚学堂JAVA基础学习笔记_2/2

    尚学堂JAVA基础学习笔记_2/2 文章目录 尚学堂JAVA基础学习笔记_2/2 写在前面 第10章 IO技术 1. IO入门 2. IO的API 3. 装饰流 4. IO实战 5. CommonsI ...

  5. 【Java】学习笔记2——从小白到入门(技术提升篇)

    写在前面 [Java]学习笔记1--从小小白到小白 (基础知识篇)里记录了Java中最最基础的知识,在对基础知识有了基本了解之后,就可以开始着手技术提升了.本篇博客也将延续第一篇,继续记录我的Java ...

  6. Java NIO 学习笔记(三)----Selector

    目录: Java NIO 学习笔记(一)----概述,Channel/Buffer Java NIO 学习笔记(二)----聚集和分散,通道到通道 Java NIO 学习笔记(三)----Select ...

  7. java多线程学习笔记。

    java多线程学习笔记 线程的优缺点: 多线程的好处: 充分利用多处理核心,提高资源的利用率和吞吐量. 提高接口的响应效率,异步系统工作. 线程的风险: 安全危险(竞争条件):什么坏事都没有发生.在没 ...

  8. JAVA视频学习笔记-马士兵(六)

    `JAVA视频学习笔记-马士兵` 常用类_字符串相关类(20200614~16) 常用类_字符串相关类(20200617) 常用类_基本数据类型包装类(20200618) 常用类_Math类(2020 ...

  9. 尚学堂JAVA高级学习笔记_1/2

    尚学堂JAVA高级学习笔记 文章目录 尚学堂JAVA高级学习笔记 写在前面 第1章 手写webserver 1. 灵魂反射 2. 高效解析xml 3. 解析webxml 4. 反射webxml 5. ...

最新文章

  1. bzoj1108[POI2007]天然气管道Gaz*
  2. 整合rabbitmq+redis发送验证码消息
  3. php类库下载下来怎么使用,PHP如何实现$this-[类库名称]-[类库方法]。
  4. 判断整除(opj)(动态规划)
  5. linux密码stdin怎么用,如何使ssh接收来自stdin的密码
  6. 算法导论课后习题解析 第四章 下
  7. 在PC上用模拟器搭建Windows Mobile仿真环境:Microsoft Device Emulator使用
  8. php 的html文件怎么打开,什么是html文件?html格式如何打开?(图)
  9. JAVA获取服务器路径的方法
  10. valgrind 检查内存泄露
  11. Spring的一种拦截器SimpleUrlHandlerMapping
  12. 基于Web应用的性能分析及优化案例
  13. 关系抽取--CASREL
  14. win7计算机管理快捷键,win7系统快捷键有哪些|win7常用的15个快捷键
  15. 模拟AP与可以访问互联网的网络连接,虚拟出一个“无线路由器”
  16. cpu性能排行 服务器,服务器cpu天梯图2020 至强处理器天梯排名
  17. nacos配置中心提示com.alibaba.nacos.shaded.io.grpc.StatusRuntimeException UNAVAILABLE io exceptio
  18. mysql 批量替换 某个字段的值 replace 方法
  19. RXJava之线程控制Scheduler(四),Android面试题
  20. 如何等比例调整图片大小?

热门文章

  1. php类代码中常看到::的操作符
  2. No valid Qt version set. Set one in Tools/Options 问题(QT)
  3. 《Go语言程序设计》读书笔记(十)反射
  4. BioPython-1
  5. ElasticSearch的安装过程
  6. Zookeeper的集群架构以及读写原理
  7. springcloud使用restTemplate进行服务调用
  8. 从零搭建angular环境和初项目
  9. 1.1 Python 安装
  10. 安装centos6.7和deepin15的折腾记录