DataOutputStream与DataInputStream

 1 package IoTest;
 2 
 3 import java.io.DataOutputStream;
 4 import java.io.FileOutputStream;
 5 
 6 /*
 7  * java.io.DataOutputStream:数据专属流
 8  * 这个流可以将数据连同数据的类型一并写入文件。
 9  * 注意:这个文件不是普通文本文档,即无法用记事本打开。
10  */
11 public class DataOutputStreamTest {
12     public static void main(String[] args) throws Exception{
13         //创建数据专属的字节输出流
14         DataOutputStream dops=new DataOutputStream(new FileOutputStream("data"));
15         byte b=100;
16         short s=200;
17         long l=400l;
18         float f=3.0f;
19         double d=3.14;
20         boolean sex=false;
21         char c='a';
22         //写,把数据以及数据的类型一并写入文件中
23         //可以理解为专属流
24         //往读外取数据的时候必须按照顺序进行:即先写什么,先读什么
25         dops.writeByte(b);
26         dops.writeShort(s);
27         dops.writeLong(l);
28         dops.writeFloat(f);
29         dops.writeDouble(d);
30         dops.writeBoolean(sex);
31         dops.writeChar(c);
32         dops.flush();
33         dops.close(); 
34         System.out.println("完成写操作");
35     }
36 
37 }
 1 package IoTest;
 2 import java.io.DataInputStream;
 3 import java.io.FileInputStream;
 4 import java.io.FileOutputStream;
 5 //DataOutputStream写的文件只能用DataInputStream读
 6 //并且读的顺序必须和写的顺序一致,而且是写了几个要读几个否则会导致读出的乱码
 7 public class DataInputStreamTest {
 8     public static void main(String[] args) throws Exception{
 9         DataInputStream dips=new DataInputStream(new FileInputStream("data"));
10         byte b=dips.readByte();
11         short s=dips.readShort();
12         long l=dips.readLong();
13         float f=dips.readFloat();
14         double d=dips.readDouble();
15         boolean sex=dips.readBoolean();
16         char c=dips.readChar();
17         dips.close(); 
18         //System.out.println(b);
19         System.out.println(s);
20         System.out.println(l);
21         System.out.println(f);
22         System.out.println(d);
23         System.out.println(sex);
24         System.out.println(c);
25     }
26     
27 }

读操作运行结果:

100
200
400
3.0
3.14
false
a

注:

1.将某行读的代码注释掉,会发现注释掉那行以下代码读出的数据发生乱码

 

 运行结果:

 

 

 可以发现,从注释掉的那行代码以下的读操作所读出的数据全部出现乱码,以上的操作读出的正常。

2.读的顺序与写的顺序不同

2.1 相邻两行交换顺序

 

 2.2 不相邻的两行交换顺序

 

posted @ 2020-10-05 22:28  L1998  阅读(191)  评论(0)    收藏  举报