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 不相邻的两行交换顺序


浙公网安备 33010602011771号