如何使用 DataInputStream and DataOutputStream?


DataOutputStream and DataInputStream give us the power to write and read primitive data type to a media such as file. Both of this class have the corresponding method to write primitive data and read it back.

Using this class make it easier to read integer, float, double data and others without needing to interpret if the read data should be an integer or a float data. Let's see our code below.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
package  org.kodejava.example.io;
  
import  java.io.DataInputStream;
import  java.io.FileInputStream;
import  java.io.DataOutputStream;
import  java.io.FileOutputStream;
import  java.io.IOException;
  
public  class  PrimitiveStreamExample {
  
     public  static  void  main(String[] args) {
         //
         // Prepares some data to be written to a file.
         //
         int  cityIdA = 1 ;
         String cityNameA = "Green Lake City" ;
         int  cityPopulationA = 500000 ;
         float  cityTempA = 15 .50f;
  
         int  cityIdB = 2 ;
         String cityNameB = "Salt Lake City" ;
         int  cityPopulationB = 250000 ;
         float  cityTempB = 10 .45f;
  
         try  {
             //
             // Create an instance of FileOutputStream with cities.dat
             // as the file name to be created. Then we pass the input
             // stream object in the DataOutputStream constructor.
             //
             FileOutputStream fos = new  FileOutputStream( "cities.dat" );
             DataOutputStream dos = new  DataOutputStream(fos);
  
             //
             // Below we write some data to the cities.dat.
             // DataOutputStream class have various method that allow
             // us to write primitive type data and string. There are
             // method called writeInt(), writeFloat(), writeUTF(),
             // etc.
             //
             dos.writeInt(cityIdA);
             dos.writeUTF(cityNameA);
             dos.writeInt(cityPopulationA);
             dos.writeFloat(cityTempA);
  
             dos.writeInt(cityIdB);
             dos.writeUTF(cityNameB);
             dos.writeInt(cityPopulationB);
             dos.writeFloat(cityTempB);
  
             dos.flush();
             dos.close();
  
             //
             // Now we have a cities.dat file with some data in it.
             // Next you'll see how easily we can read back this
             // data and display it. Just like the DataOutputStream
             // the DataInputStream class have the corresponding
             // read methods to read data from the file. Some of
             // the method names are readInt(), readFloat(),
             // readUTF(), etc.
             //
             FileInputStream fis = new  FileInputStream( "cities.dat" );
             DataInputStream dis = new  DataInputStream(fis);
  
             //
             // Read the first data
             //
             int  cityId1 = dis.readInt();
             System.out.println( "Id: "  + cityId1);
             String cityName1 = dis.readUTF();
             System.out.println( "Name: "  + cityName1);
             int  cityPopulation1 = dis.readInt();
             System.out.println( "Population: "  + cityPopulation1);
             float  cityTemperature1 = dis.readFloat();
             System.out.println( "Temperature: "  + cityTemperature1);
  
             //
             // Read the second data
             //
             int  cityId2 = dis.readInt();
             System.out.println( "Id: "  + cityId2);
             String cityName2 = dis.readUTF();
             System.out.println( "Name: "  + cityName2);
             int  cityPopulation2 = dis.readInt();
             System.out.println( "Population: "  + cityPopulation2);
             float  cityTemperature2 = dis.readFloat();
             System.out.println( "Temperature: "  + cityTemperature2);
         } catch  (IOException e) {
             e.printStackTrace();
         }
     }
}

The generated result of our program are:

City Id: 1
City Name: Green Lake City
City Population: 500000
City Temperature: 15.5
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值