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
注:当要求输入输出流必须遵循平台无关时,可以使用这两个类