简介:
DataOutputStream数据输出流: 将java基本数据类型写入数据输出流中。
DataInputStream数据输入流:将DataOutputStream写入流中的数据读入。
这两个数据流分别FilterInputStream/FilterOutputStream的子类,顾名思义如同Buffer流一样,也是提高了写入和读出效率的。
DataOutputStream中write的方法重载:
- 继承了字节流父类的两个方法:
(1)void write(byte[] b,int off,int len);
(2)void write(int b);//写入UTF数值,代表字符
注意字节流基类不能直接写入string 需要先将String转化为getByte()转化为byte数组写入 - 特有的指定基本数据类型写入:
(1)void writeBoolean(boolean b);//将一个boolean值以1byte形式写入基本输出流。
(2)void writeByte(int v);//将一个byte值以1byte值形式写入到基本输出流中。
(3)void writeBytes(String s);//将字符串按字节顺序写入到基本输出流中。
(4)void writeChar(int v);//将一个char值以2byte形式写入到基本输出流中。先写入高字节。写入的也是编码值;
(5)void writeInt(int v);//将一个int值以4byte值形式写入到输出流中先写高字节。
(6)void writeUTF(String str);//以机器无关的的方式用UTF-8修改版将一个字符串写到基本输出流。该方法先用writeShort写入两个字节表示后面的字节数。
DataInputStream中read方法重载:
- 继承了字节流父类的方法:
int read();
int read(byte[] b);
int read(byte[] buf,int off,int len); - 对应write方法的基本数据类型的读出:
String readUTF();//读入一个已使用UTF-8修改版格式编码的字符串
boolean readBoolean;
int readInt();
byte readByte();
char readChar();
注意:
基本数据类型的写入流和输出流,必须保证以什么顺序按什么方式写入数据,就要按什么顺序什么方法读出数据,否则会导致乱码,或者异常产生。
列子:
public class Test {
public static void main(String[] args) {
DataOutputStream dos = null;
DataInputStream dis = null;
try {
//写入基本数据类型
dos = new DataOutputStream(new FileOutputStream("d://dataTest.txt"));
dos.writeUTF("你好呀,ok");
dos.writeInt(18888);
dos.writeLong(188888);
dos.writeByte(123);
dos.writeFloat(1.344f);
dos.writeBoolean(true);
dos.writeDouble(1.444444d);
dos.writeChar(49);
dos.flush();
dos.close();
//读出基本数据类型
dis = new DataInputStream(new FileInputStream("d://dataTest.txt"));
System.out.println(dis.readUTF());
System.out.println(dis.readInt());
System.out.println(dis.readLong());
System.out.println(dis.readByte());
System.out.println(dis.readFloat());
System.out.println(dis.readBoolean());
System.out.println(dis.readDouble());
System.out.println(dis.readChar());
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}