Java流式IO

來源:互聯網
上載者:User

標籤:

1. 流式IO結構

  只給出了較為常用的IO流的類圖結構

 

 

  Java的IO流主要分為兩大類:位元組流和字元流,位元組流以InputStream和OutputStream為基礎類,字元流以Reader和Writer為基礎類。

 

2. 位元組流

  位元組流以InputStream和OutputStream為基礎類,常用的子類流有:

  FileInputStream和FileOutputStream用於從檔案讀寫位元據;

  FilterInputStream和FilterOutputStream即過濾流,過濾流可以嵌套基本二進位輸入輸出資料流或者其他過濾流,增強處理輸入輸出資料流的處理能力。其中BufferedInputStream和BufferedOutputStream流提供了讀寫緩衝的功能,DataInputStream和DataOutputStream提供了對位元組流讀寫的更多支援(如:讀寫二進位整數等);

     ObjectInputStream和ObjectOutputStream用於讀寫對象,對象所屬的類需要實現Serializable介面,現在更常用的方式應該是使用JSON格式來傳遞對象;

  讀寫二進位檔案通常使用如下嵌套流的方式:

  new DataInputStream(new BufferedInputStream(new FileInputStream(new File(filename))));

  new DataOutputStream(new BufferedOutputStream(new FileOutputStream(new File(filename))));

 

3.字元流

  字元流以Reader和Writer為基礎類,常用的子類有:

  FileReader和FileWriter類用於從檔案讀寫文本資料;

  BufferedReader和BufferWriter用於讀寫文本資料,提供了讀寫緩衝的功能,通常用於封裝其他的字元輸入輸出資料流;

  BufferedReader類中常用的方法是readLine讀入一行資料,然後使用String類的相關API處理,更常用的方式是使用java.util.Scanner類來對讀字元流提供更多支援;

      PrintWriter類對寫字元流提供了更多支援;

  讀寫文字檔通常使用如下嵌套流的方式:

  new BufferedReader(new FileReader(new File(...));

  new PrintWriter(new BufferedWriter(new FileWriter(new File(...))));

 

4. 位元組流和字元流的轉換

   位元組流轉換成字元流使用InputStreamReader:

  new BufferedReader(new InputStreamReader(inputStream));

   字元流轉換成位元組流使用OutputStreamWriter:

  new BufferedWriter(new OutputStreamWriter(outputStream));

 

5. ZIP檔案輸入輸出資料流

  Java中提供了對zip壓縮檔讀寫支援,相關類在java.util.zip包中。

  ZipInputStream類和ZipOutputStream分別繼承成自java.io.FilterInputStream類和java.io.FilterOutputStream類,用於讀寫zip壓縮檔。

  ZipEntry類用於表示zip檔案中的一個條目,讀寫zip檔案,首先建立ZipInputStream或者ZipOutputStream,然後使用getNextEntry方法擷取zip檔案中的每個被壓縮的檔案,依次處理,每個處理完成一個條目之後,調用closeEntry方法關閉當前條目,處理完整個zip檔案後,調用close方法關閉整個zip檔案。

  下面給出一個依次列印zip檔案中所有檔案內容的例子:

ZipInputStream zin = new ZipInputStream(new FileInputStream("test.zip"));ZipEntry zipEntry;Scanner scanner;while( (zipEntry = zin.getNextEntry() ) != null ){    scanner = new Scanner(zin);    System.out.println(zipEntry.getName());   //輸出檔案名稱    //輸出檔案內容    while(scanner.hasNextLine())    {        System.out.println(scanner.nextLine());    }    zin.closeEntry();}zin.close();

 

Java流式IO

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.