JAVA中常用IO流类: DataInputStream和DataOutputStream
转载
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
注:当要求输入输出流必须遵循平台无关时,可以使用这两个类