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 中读取用 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 
          将字符串按字节顺序写出到基础输出流中。

 void

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

 void

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

 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 
          以与机器无关方式使用 UTF-8 修改版编码将一个字符串写入基础输出流。

 

实例:


import
class
{  
public static void
    {  
try
        {  
new FileOutputStream("xxx.data");  
new
100);  
"DataOutputStream Test");  
        dos.close();  
  
new FileInputStream("xxx.data");  
new
"int:"+dis.readInt());  
"UTF:"+dis.readUTF());  
        dis.close();  
        }  
catch
        {  
            e.printStackTrace();  
        }  
          
    }  
}


 

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

int:100

UTF:DataOutputStream Test



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