Java筆記:I/O

來源:互聯網
上載者:User

標籤:抽象類別   tab   catch   nts   關聯   位元組流   adl   class   one   

一、流

Java通過流實現I/O,流是一種可以產生或使用資訊的抽象。

Java定義了兩種類型的流:

  • 位元組流:處理位元組的輸入和輸出,例如讀寫位元據。
  • 字元流:處理字元的輸入和輸出。

在底層所有I/O仍然是面向位元組的,字元流知識為處理字元提供更高效的方法。

 

二、位元組流類

BufferedInputStream

BufferedOutputStream

緩衝的輸入資料流

緩衝的輸出資料流

ByteArrayInputStream

ByteArrayOutputStream

讀取位元組數組的輸入資料流

寫入位元組數組的輸出資料流

DataInputStream

DataOutputStream

讀取標準資料類型的方法的輸入資料流

寫入標準資料類型的方法的輸出資料流

FileInputStream

FileInputStream

讀取檔案的輸入資料流

寫入檔案的輸出資料流

InputStream

OutputStream

描述流輸入的抽象類別

描述流輸出的抽象類別

FilterInputStream

FilterOutputStream

實現InputStream

實現OutputStream

ObjectInputStream

ObjectOutputStream

對象的輸入資料流

對象的輸出資料流

PipedInputStream

PipedOutputStream

輸入管道

輸出管道

PrintStream

包含print和println的輸出資料流

PushbackInputStream

允許位元組返回的輸入資料流

SequenceInputStream

由多個依次讀取的輸入資料流組合而成的輸入資料流

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

三、字元流類

BufferedReader

BufferedWriter

緩衝的輸入字元流

緩衝的輸出字元流

CharArrayReader

CharArrayWriter

從字元數組讀取內容的輸入資料流

向字元數組寫入內容的輸出資料流 

FileReader

FileWriter

讀取檔案的輸入資料流

寫入檔案的輸出資料流

FilterReader

FilterWriter

過濾的讀取器

過濾的寫入器

InputStreamReader

OutputStreamWriter

將位元組轉換為字元的輸入資料流

將字元轉換為位元組的輸出資料流 

StringReader

StringWriter

從字串讀取內容的輸入資料流

向字串寫入內容的輸出資料流 

PipedReader

PipedWriter

輸入管道

輸出管道 

Reader

Writer

描述字元流輸入的抽象類別

描述字元流輸出的抽象類別 

PrintWriter

包含print和println的輸出資料流 

PushbackReader

允許字元返回的輸入資料流

LineNumberReader

支援行操作的輸入資料流

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

四、預定義流

System包含的預定義流

  • System.out:標準輸出資料流,PrintStream類型對象。
  • System.err:標準錯誤流,PrintStream類型對象。
  • System.in:標準輸入資料流,InputStream類型對象。

 

五、控制台

import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;class Solution {    public static void main(String[] args) throws IOException {        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));        char c = (char) reader.read();//擷取字元        System.out.write(c);        String str = reader.readLine();//讀取字串        PrintWriter writer = new PrintWriter(System.out, true);        writer.println(str);    }}
View Code

 

六、讀寫檔案

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;class Solution {    static String read(String fileName) {        FileInputStream fin = null;        StringBuilder builder = new StringBuilder();        try {            fin = new FileInputStream(fileName);            int i;            do {                i = fin.read();//讀取位元組                if (i != -1)//-1表示到達檔案結尾                    builder.append((char) i);            } while (i != -1);        } catch (FileNotFoundException exc) {            System.out.println("Cannot open file");        } catch (IOException exc) {            System.out.println("Cannot read file");        } finally {            try {                if (fin != null)                    fin.close();            } catch (IOException exc) {                System.out.println("Cannot close file");            }        }        return builder.toString();    }    static void write(String fileName, String content) {        FileOutputStream fout = null;        try {            fout = new FileOutputStream(fileName);            for (int i = 0; i < content.length(); i++)                fout.write((int) content.charAt(i));//寫入位元組        } catch (FileNotFoundException exc) {            System.out.println("Cannot open file");        } catch (IOException exc) {            System.out.println("Cannot write file");        } finally {            try {                if (fout != null)                    fout.close();            } catch (IOException exc) {                System.out.println("Cannot close file");            }        }    }}
View Code

自動關閉檔案,離開代碼塊後會隱式調用close方法關閉流關聯的對象。

import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;class Solution {    public static void main(String[] args) {        try (FileInputStream fin = new FileInputStream("file.txt")) {            int i;            do {                i = fin.read();                if (i != -1)                    System.out.print((char) i);            } while (i != -1);        } catch (FileNotFoundException exc) {            System.out.println("Cannot open file");        } catch (IOException exc) {            System.out.println("Cannot read file");        }    }}
View Code

 

Java筆記:I/O

聯繫我們

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