關於Java中的IO流:流的繼承關係、處理流、轉換流

來源:互聯網
上載者:User
1、 流的繼承關係,以及位元組流和字元流。

2、 節點流FileOutputStream和FileInputStream和處理流BufferedInputStream和BufferedOutputStream。以及對應的FileOutputWriter,FileInputReader,BufferedInputReader,BufferedOutputWriter。

3、 轉換流InputStreamReader和OutputStreamWriter

一:流的繼承關係

位元組流

字元流

字元流和位元組流的使用範圍:位元組流一般用來處理映像,視頻,以及PPT,Word類型的檔案。字元流一般用於處理純文字類型的檔案,如TXT檔案等,位元組流可以用來處理純文字檔案,但是字元流不能用於處理映像視頻等非文本類型的檔案。

二:處理流BufferedReader,BufferedWriter,BufferedInputStream

BufferedOutputsStream,都要包上一層節點流。也就是說處理流是在節點流的基礎之上進行的,帶有Buffered的流又稱為緩衝流,緩衝流處理檔案的輸入輸出的速度是最快的。所以一般緩衝流的使用比較多。

下面是兩個簡單的檔案複製的執行個體:

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

public class MycopyTest {

public static void main(String[] args) {

File src = new File("D:/1.jpg");

// D:/1.jpg必須的存在不然會報錯

File dest = new File("D:/2.jpg");

// 如果D:/2.jpg存在則覆蓋,如果不存在則建立

streamCopy(src, dest);

}

private static void readCopy(File src,File dest)


{

FileReader fr=null;

FileWriter fw=null;

BufferedReader br=null;

BufferedWriter bw=null;

try {

fr=new FileReader(src);

fw=new FileWriter(dest);

br=new BufferedReader(fr);

bw=new BufferedWriter(fw);

String str;

while((str=br.readLine())!=null)

{

bw.write(str);

bw.newLine();

}

}catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

bw.close();

br.close();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

private static void streamCopy(File src, File dest) {

FileInputStream fis = null;

FileOutputStream fos = null;

BufferedInputStream bis = null;

BufferedOutputStream bos = null;

try {

fis = new FileInputStream(src);

fos = new FileOutputStream(dest);

bis = new BufferedInputStream(fis);

bos = new BufferedOutputStream(fos);

int len;

byte[] b = new byte[1024];

while ((len = bis.read(b)) != -1) {

bos.write(b, 0, len);

// bos.write(b,0,len);是把讀到數組的大小位元組寫入

// bos.write(b);最後一次如果數組未寫滿的話就會多讀。

}

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

bos.close();

bis.close();

} catch (Exception e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

三:轉換流InputStreamReader和OutputStreamWriter

轉換流的作用,文字檔在硬碟中以位元組流的形式儲存時,通過InputStreamReader讀取後轉化為字元流給程式處理,程式處理的字元流通過OutputStreamWriter轉換為位元組流儲存。

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

public class InputStreamWriterTest {

public static void main(String[] args) {

File src = new File("D:/Files/狗屁.txt");

File dest = new File("D:/Files/斯密斯.txt");

BufferedWriter bw = null;

BufferedReader br = null;

FileInputStream fis = null;

FileOutputStream fos = null;

try {

fis = new FileInputStream(src);

fos = new FileOutputStream(dest);

InputStreamReader ir = new InputStreamReader(fis, "GBK");

OutputStreamWriter ow = new OutputStreamWriter(fos, "GBK");

bw = new BufferedWriter(ow);

br = new BufferedReader(ir);

String str;

while ((str = br.readLine()) != null) {

bw.write(str);

bw.newLine();

bw.flush();

}

} catch (IOException e) {

e.printStackTrace();

}

try {

bw.close();

br.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

相關文章:

java IO流 之 輸出資料流 OutputString()的使用

Java關於IO流的全面介紹

相關視頻:

最新Java完整視頻教程-免費線上視頻教程

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.