首頁 >Java >java教程 >關於Java中的IO流:流的繼承關係、處理流、轉換流

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

php是最好的语言
php是最好的语言原創
2018-08-04 14:29:241928瀏覽

1、 流的繼承關係,以及位元組流和字元流。

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

3、轉換流InputStreamReader與OutputStreamWriter

# 一:流的繼承關係

位元組流

#字符流

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

二:處理流BufferedReader,BufferedWriter,BufferedInputStream

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

下面是兩個簡單的檔案複製的實例:

// bos.write(b);最後若快取未寫滿的字就會一次多讀。

#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 自動產生的 catch 區塊

      e.printStackTrace();

#

    }

###### ####

      bw.close();

      

#br.close();

    

} catch

#(IOException e) {

#       // TODO 自動產生的 catch 區塊

      

e.printStackTrace();#

    

}  

##

  }

#

  

private static

void

streamCopy(檔案 src,檔案 dest) {     FileInputStream fis = null

#;

    FileOutputStream fos = null

#;

    BufferedInputStream bis = null

;

#     BufferedOutputStream bos = null

;

# ###### ####       fis = #new

#FileInputStream(src);

# #       fos = #new#FileOutputStream(dest);

# #       bis =

#new

#BufferedInputStream(fis);

      bos = #new#BufferedOutputStream(fos);

##       int

#len;

#       

#位元組

#[] b =

位元組

#[ 1024];

      

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

) {         

bos.write(b, 0#, len);

#         // bos.write(b,0,len);是將讀取磁碟大小的位元組寫入

#         

######################################################################################## ######      ######}####### ######    ######} ######catch#### ###(IOException e) {####### ######      ######// TODO 自動產生的 catch 區塊###### ######      ######e.printStackTrace();####### ######    ######}###### ###### #### ######      ######bos.close();###### ######      ######bis.close();###### ######    ######} ######catch#### ###(例外 e){###### ######      ######// TODO 自動產生的 catch 區塊###### ######      ######e.printStackTrace();####### ######    ######}###### ######  ######}####### ######}###### ### ##########

 三:轉換流InputStreamReader和OutputStreamWriter

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

#br = #new

#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/Sith.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);

#       

###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完整影片教學-免費線上影片教學#######

以上是關於Java中的IO流:流的繼承關係、處理流、轉換流的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn