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