Java I/O(輸入/輸出)主要被用來處理輸入數據和輸出結果。
在Java中,輸入/輸出操作被當作流(Stream)進行處理。流是一個連續的數據流入或數據流出的通道。流操作在Java中主要可以分為兩種類型:字節流和字符流。
一、字節流
字節流可以處理所有類型的數據(如圖片,視頻,音頻等)。在Java的java.io
包中,包含了所有操作輸入/輸出的類和接口。這些類和接口均被設計為字節流形式。
字節流的兩個基類是:
- InputStream:所有的字節輸入流類都是這個類的子類
- OutputStream:所有的字節輸出流類都是這個類的子類。
以下是一個使用字節流讀取數據的例子:
import java.io.*;public class TestByteStream {public static void main(String args[]) {try {byte bWrite[] = {11,21,3,40,5};OutputStream os = new FileOutputStream("test.txt");for (int i = 0; i < bWrite.length; i++) {os.write(bWrite[i]); }os.close();InputStream is = new FileInputStream("test.txt");int size = is.available();for (int i = 0; i < size; i++) {System.out.print((char) is.read() + " "); }is.close();} catch (IOException e) {System.out.println("Exception: " + e);} }
}
二、字符流
相對于字節流,字符流處理的是字符數據,專門用于處理文本(String,char等)。字符流的基類是Reader和Writer。
- Reader:所有的字符輸入流類都是這個類的子類。
- Writer:所有的字符輸出流類都是這個類的子類。
以下是一個使用字符流讀取數據的例子:
import java.io.*;public class TestCharStream {public static void main(String args[]) throws IOException {char c[] = new char[30];Reader read = new FileReader("test.txt");int len = read.read(c);System.out.println("從文件中讀取的字符數 : " + len);for (int i = 0; i < len; i++) {System.out.print(c[i]);}read.close();}
}
在處理輸入/輸出流時,需要注意的是,系統不會自動關閉流,需要我們手動調用close()
方法來關閉流,防止出現數據的丟失。
通過以上的介紹,希望你對Java中的輸入/輸出流有了更多的了解。在Java編程中,合理地使用這兩種流能夠提高我們代碼的效率和健壯性。