【Java.IO】I/O 字节处理流 - 之- 基本Java数据类型操作流 —— DataInputStream, DataOutputStream
来源:互联网 发布:守望先锋网络质量参数 编辑:程序博客网 时间:2024/05/16 11:37
DataInputStream,DataOutputStream主要用于基础Java数据类型数据的序列化/反序列化;将基本的Java数据类型数据与二进制字节相互转化;
例如,我们可以利用DataOutputStream.writeUTF(String s)方法,直接将一个String对象写入一个字节输出流中,之后再利用DataInputStream.readUTF()方法将String对象直接读取出来。简化了中间转换的操作。
注意:读取和写入的顺序应该一致,否则会导致错误的数据拆分。
- DataInputStream
public class DataInputStreamextends FilterInputStreamimplements DataInput
从一个底层字节input stream中读取Java基础数据类型(byte char int double, .etc)的数据;
使用data output stream写入的数据可以使用data input stream读取;
- DataOutputStream
public class DataOutputStreamextends FilterOutputStreamimplements DataOutput
向一个底层的字节output stream中写入Java基础数据类型(byte char int double, .etc)的数据;
使用data output stream写入的数据可以使用data input stream读取;
使用示例:
我们将首先创建一个内存(字符数组)输出流,用于向其中写入数据;然后利用DataOutputStream向其中直接写入基础数据类型的Java对象,之后再利用DataInputStream从其中直接读取出对应的Java对象;
package com.gof.io.test;import java.io.ByteArrayOutputStream;import java.io.ByteArrayInputStream;import java.io.DataOutputStream;import java.io.DataInputStream;public class DataInputAndOutputApp {public static void main(String[] args){ByteArrayOutputStream baos = null;ByteArrayInputStream bais = null;DataOutputStream dos = null;DataInputStream dis = null;int n = 10;double d = 12.05;String str = "test string";try{// writebaos = new ByteArrayOutputStream();dos = new DataOutputStream(baos);dos.writeInt(n);dos.writeDouble(d);dos.writeUTF(str);dos.flush();// readbais = new ByteArrayInputStream(baos.toByteArray());dis = new DataInputStream(bais);System.out.println("The int is: " + dis.readInt());System.out.println("The double is: " + dis.readDouble());System.out.println("The String is: " + dis.readUTF());}catch (Exception e){e.printStackTrace();}finally{try{dis.close();dos.close();bais.close();baos.close();}catch (Exception e){e.printStackTrace();}}}}
输出结果:
<span style="font-family:SimSun;"><span style="font-size:10px;">The int is: 10The double is: 12.05The String is: test string</span></span>
如果调整readXXX操作的顺序,将得到错误的结果。
0 0
- 【Java.IO】I/O 字节处理流 - 之- 基本Java数据类型操作流 —— DataInputStream, DataOutputStream
- 黑马程序员——【Java】IO——操作基本数据类型的流:DataInputStream & DataOutputStream
- Java I/O流-DataInputStream、DataOutputStream
- Java IO系列3 字节流之DataInputStream与DataOutputStream
- Java IO--数据操作流DataOutputStream/DataInputStream
- 黑马程序员——Java IO—字节流—DataInputStream 和 DataOutputStream
- Java IO操作——数据操作流DataOutputStream和DataInputStream的使用
- Java IO操作——数据操作流DataOutputStream和DataInputStream的使用
- Java IO流->处理流->数据流:DataOutputStream&DataInputStream
- java基础之IO流--DataOutputStream(专门用于操作Java基本数据类型的IO流对象)
- Java IO——DataOutputStream & DataInputStream
- java语言编程IO流之DataInputStream与DataOutputStream
- java核心技术之IO流(六)DataInputStream和DataOutputStream
- 【Java.IO】I/O 字节处理流 - 之 - 内存(字节数组)操作流 - ByteArratInputStream,ByteArrayOutputStream
- DataInputStream 和DataOutputStream用于操作Java的基本数据类型
- IO流——数据类型处理流(DataInputStream和DataOutputStream)
- IO流之DataInputStream 、DataOutputStream
- Java IO - DataInputStream&DataOutputStream
- 如何在C语言使用位运算实现循环移位
- Good Explain on Sleep in Kernel, let me understanding the mechanism of avoiding "missing wake"
- Mac OS上使用brew安装软件,类似ubuntu下的apt-get
- Html5在Visual Studio的完美结合
- Android SVN开发实战之目录结构介绍
- 【Java.IO】I/O 字节处理流 - 之- 基本Java数据类型操作流 —— DataInputStream, DataOutputStream
- Git 使用的一些介绍
- 乐观锁与悲观锁
- wamp php环境配置
- java语言的动态性支持(2)----反射的构造函数
- Linux常用指令
- Android SDK在eclipse中更新的URL问题
- 只需一句话解决qt中文乱码问题,等验证
- php 批量下载