DataOutputStream&DataInputStream是对输出输入流的扩展,可以直接读写int double等数据类型
下面是今天的练习,细节都写到注释里面了:
1 package Zhang;
2
3 import java.io.DataInputStream;
4
5 import java.io.DataOutputStream;
6
7 import java.io.File;
8
9 import java.io.FileInputStream;
10
11 import java.io.FileOutputStream;
12
13 public class DataStreamTest {
14
15 public static void main(String[] args) throws Exception{
16
17 //创建文件
18
19 File file=new File("/home/zhang/Desktop/DataStreamTest.dat");
20
21 if(!file.exists()){
22
23 file.createNewFile();
24
25 }
26
27 //DataOutputStream&DataInputStream是对输出输入流的扩展,可以直接读写int double等数据类型
28
29 //采用的设计模式是装饰模式
30
31 DataOutputStream dos=new DataOutputStream(new FileOutputStream(file));
32
33 DataInputStream dis=new DataInputStream(new FileInputStream(file));
34
35
36
37 int testInt=2016;
38
39 double testDouble=10.12;
40
41 long testLong=20161012;
42
43 dos.writeInt(testInt);
44
45 dos.writeDouble(testDouble);
46
47 dos.writeLong(testLong);
48
49 /*
50
51 * dos.writeUTF("xxx")在写入字符串到文件的同时,在文件中也保存了该字符串的长度,这样
52
53 * 在使用dis.readUTF()的时候就可以先获取文件中保存的字符串的长度信息,然后读取这个长度
54
55 * 的字符串。
56
57 * utf-8 一个汉字占用3个字节
58
59 * */
60
61 dos.writeUTF("今天的");
62
63 dos.writeUTF("天气非常好");
64
65 dos.close();
66
67
68
69 int intTest=dis.readInt();
70
71 System.out.println(intTest);
72
73 double doubleTest=dis.readDouble();
74
75 System.out.println(doubleTest);
76
77 long longTest=dis.readLong();
78
79 System.out.println(longTest);
80
81 String time=dis.readUTF();
82
83 String how=dis.readUTF();
84
85 System.out.println(time+"\t"+how);
86
87 dis.close();
88
89 }
90
91 }