JAVA中常用IO流类: DataInputStream和DataOutputStream

来源:互联网 发布:淘宝退货运费怎么算 编辑:程序博客网 时间:2024/06/08 06:41

  DataInputStream和DataOutputStream二者分别实现了DataInput/DataOutput接口

DataInputStream能以一种与机器无关(当前操作系统等)的方式,直接从地从字节输入流读取JAVA基本类型和String类型的数据,常用于网络传输等(网络传输数据要求与平台无关)常用方法包括:

 


方法摘要

 int

read(byte[] b) 
          从包含的输入流中读取一定数量的字节,并将它们存储到缓冲区数组 b 中。

 int

read(byte[] b, int off, int len) 
          从包含的输入流中将最多 len 个字节读入一个 byte 数组中。

 boolean

readBoolean() 
          参见 DataInput  readBoolean 方法的常规协定。

 byte

readByte() 
          参见 DataInput  readByte 方法的常规协定。

 char

readChar() 
          参见 DataInput  readChar 方法的常规协定。

 double

readDouble() 
          参见 DataInput  readDouble 方法的常规协定。

 float

readFloat() 
          参见 DataInput  readFloat 方法的常规协定。

 void

readFully(byte[] b) 
          参见 DataInput  readFully 方法的常规协定。

 void

readFully(byte[] b, int off, int len) 
          参见 DataInput  readFully 方法的常规协定。

 int

readInt() 
          参见 DataInput  readInt 方法的常规协定。

 

 

 long

readLong() 
          参见 DataInput  readLong 方法的常规协定。

 short

readShort() 
          参见 DataInput  readShort 方法的常规协定。

 int

readUnsignedByte() 
          参见 DataInput  readUnsignedByte 方法的常规协定。

 int

readUnsignedShort() 
          参见 DataInput  readUnsignedShort 方法的常规协定。

 String

readUTF() 
          参见 DataInput  readUTF 方法的常规协定。

static String

readUTF(DataInput in) 
          从流 in 中读取用 UTF-8 修改版格式编码的 Unicode 字符格式的字符串;然后以 String 形式返回此字符串。

 int

skipBytes(int n) 
          参见 DataInput  skipBytes 方法的常规协定。

 

DataOutputStream则能够直接将JAVA基本类型和String类型数据写入到其他的字节输入流。

常用方法:

方法摘要

 void

flush() 
          清空此数据输出流。

 int

size() 
          返回计数器 written 的当前值,即到目前为止写入此数据输出流的字节数。

 void

write(byte[] b, int off, int len) 
          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入基础输出流。

 void

write(int b) 
          将指定字节(参数 b 的八个低位)写入基础输出流。

 void

writeBoolean(boolean v) 
          将一个 boolean 值以 1-byte 值形式写入基础输出流。

 void

writeByte(int v) 
          将一个 byte 值以 1-byte 值形式写出到基础输出流中。

 void

writeBytes(String s) 
          将字符串按字节顺序写出到基础输出流中。

 void

writeChar(int v) 
          将一个 char 值以 2-byte 值形式写入基础输出流中,先写入高字节。

 void

writeChars(String s) 
          将字符串按字符顺序写入基础输出流。

 void

writeDouble(double v) 
          使用 Double 类中的 doubleToLongBits 方法将 double 参数转换为一个 long 值,然后将该 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。

 void

writeFloat(float v) 
          使用 Float 类中的 floatToIntBits 方法将 float 参数转换为一个 int 值,然后将该 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。

 void

writeInt(int v) 
          将一个 int 值以 4-byte 值形式写入基础输出流中,先写入高字节。

 void

writeLong(long v) 
          将一个 long 值以 8-byte 值形式写入基础输出流中,先写入高字节。

 void

writeShort(int v) 
          将一个 short 值以 2-byte 值形式写入基础输出流中,先写入高字节。

 void

writeUTF(String str) 
          以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。

 

实例:

import java.io.*;class IODemo{public static void main(String[] args) {try{FileOutputStream fos=new FileOutputStream("xxx.data");DataOutputStream dos=new DataOutputStream(fos);dos.writeInt(100);dos.writeUTF("DataOutputStream Test");dos.close();FileInputStream fis=new FileInputStream("xxx.data");DataInputStream dis=new DataInputStream(fis);System.out.println("int:"+dis.readInt());System.out.println("UTF:"+dis.readUTF());dis.close();}catch (IOException e){e.printStackTrace();}}}

 

运行结果:产生一个xxx.data文件(此时已经不是文本文件,此时编码为JAVA虚拟机通用格式,即UTF-8),控制台输出结果为:

int:100

UTF:DataOutputStream Test

 

注:当要求输入输出流必须遵循平台无关时,可以使用这两个类
原创粉丝点击