1. 程式人生 > >43、DataInputstream和DataOutputstream

43、DataInputstream和DataOutputstream

學習目標:

1、瞭解Java的歷史

2、為什麼要學習Java語言

3、端正學習態度

學習過程:

一、datainputstream和dataoutputstream

DataOutputStream:資料輸出流允許應用程式以適當方式將基本 Java 資料型別寫入輸出流中。然後應用程式可以使用資料輸入流將資料讀入。 

DataInputStream:資料輸入流允許應用程式以與機器無關方式從底層輸入流中讀取基本 Java 資料型別。應用程式可以使用資料輸出流寫入稍後由資料輸入流讀取的資料。對於多執行緒訪問不一定是安全的。 執行緒安全是可選的,它由此類方法的使用者負責。

比如以DataInputStream為例,位元組入流的API結構]顯示了其繼承於java.io. FilterInputStream。DataInputStream可以被認為是“更高階”的類,在程式設計中需要使用修飾其他的InputStream來進行使用,考慮到效率,推薦這個被修飾的類為帶緩衝的流,比如:BufferedInputStream。DataOutputStream的情況也是如此,就不需我們再次累述。

DataInputStream的構造器:

    DataInputStream(InputStream in)

DataOutputStream的構造器:

DataOutputStream(OutputStream out)

java.io.DataInputStream dis = new  java.io.DataInputStream(

new BufferedInputStream(new URL(srcUri).openStream()));

            /*生成二進位制輸出流 ,使用FileOutputStream--修飾-->BufferedOutputStream

--修飾-->DataOutputStream*/

             java.io.DataOutputStream dos = new  java.io.DataOutputStream(

new BufferedOutputStream(new FileOutputStream(targetFile)));

二、示例程式碼

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

public static void copy(String srcpath, String targetpath) {

DataInputStream input = null;

DataOutputStream output = null;

try {

input = new DataInputStream(new BufferedInputStream(

new FileInputStream(new File(srcpath))));

output = new DataOutputStream(new BufferedOutputStream(

new FileOutputStream(new File(targetpath))));

int temp;

while ((temp = input.read()) != -1) {

output.write(temp);

}

catch (FileNotFoundException e) {

// TODO Auto-generated catch block

e.printStackTrace();

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

finally {

// 釋放資源

try {

input.close();

output.flush();

output.close();

catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}