1. 程式人生 > >Java筆記:I/O

Java筆記:I/O

out eno display cat java筆記 txt fileinput put 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