DataInputStream和DataOutputStream提供了可以直接存取java基本类型(int,double等)的方法。对于存取基本类型,在效率上比普通字节流要快很多。它们分别继承inputStream和outputStream,并且需要套接在InputStream和OutputStream上。

  这两个类中的方法除了有读写基本类型的方法外,还有一个读写utf(即Unicode字符串utf-8)的方法。

以下程序和讲解摘自马士兵教程

 1 import java.io.ByteArrayInputStream;
 2 import java.io.ByteArrayOutputStream;
 3 import java.io.DataInputStream;
 4 import java.io.DataOutputStream;
 5 import java.io.IOException;
 6 
 7 
 8 public class TestDataStream {
 9 
10     /**
11      * @param args
12      */
13     public static void main(String[] args) {
14         // TODO Auto-generated method stub
15         ByteArrayOutputStream baos= new ByteArrayOutputStream();
16         DataOutputStream dos=new DataOutputStream(baos);
17         
18         try {
19             
20             dos.writeDouble(0.11);
21             dos.writeBoolean(true);
22             ByteArrayInputStream bais=new ByteArrayInputStream(baos.toByteArray());
23             System.out.println(bais.available());
24             DataInputStream dis=new DataInputStream(bais);
25             System.out.println(dis.readDouble());  //注意:这里必须先读double后读boolean,否则无法正确读取数据
26             System.out.println(dis.readBoolean());dos.close();dis.close();
27         } catch (IOException e) {
28             // TODO Auto-generated catch block
29             e.printStackTrace();
30         }
31     }
32 
33 }