DataInputStream和DataOutputStream是对InputStream和OutputStream字节流的格式化包装流,字节流读写是以字节为单位,对于象Java的数据类型比如int型就需要读写4次,double类型需要读写8个次,这样使用起就来非常不方便,同时也会影响性能。格式化包装流主要对Java的格式化类型进行读写操作,提供各种方便读写数据类型的方法。
DataInputStream:
String readUTF()读取字符串
int readInt()读取int型
double readDouble()读取double型
boolean readBoolean()读取boolean型
等等。
writeUTF(String)写字符串
writeInt(int)写int型
writeDouble(double)写double型
writeBoolean(boolean)写boolean型
等等。
示例1代码:
public class TestDataOutputStream {
public static void main(String[] args) {
DataOutputStream dos=null;
FileOutputStream fos=null;
DataInputStream dis=null;
FileInputStream fis=null;
String str="Hello";
int a=123;
double d=12.3;
boolean bl=true;
try {
fos=new FileOutputStream("stream.dat");
dos=new DataOutputStream(fos);
dos.writeUTF(str);
dos.writeInt(a);
dos.writeDouble(d);
dos.writeBoolean(bl);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(dos!=null){
try {
dos.flush();
dos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fos!=null)
try {
fos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
示例2代码:
public class TestDataInputStream{
public static void main(String[] args) {
DataInputStream dis=null;
FileInputStream fis=null;
try {
fis=new FileInputStream("stream.dat");
dis=new DataInputStream(fis);
String str=dis.readUTF();
int a=dis.readInt();
double d=dis.readDouble();
boolean bl=dis.readBoolean();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally{
if(dis!=null){
try {
dis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if(fis!=null)
try {
fis.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}