- Java中的IO流分為幾種
按數據單位分類:
字節流(Byte Stream):以字節(8位二進制數)為基本單位進行數據讀寫。字節流適合處理所有類型的數據,包括文本、圖像、音頻、視頻等二進制文件。抽象基類包括:
InputStream(字節輸入流)
OutputStream(字節輸出流)
具體的實現類如:FileInputStream、FileOutputStream、ByteArrayInputStream、ByteArrayOutputStream、BufferedInputStream、BufferedOutputStream等。
字符流(Character Stream):以字符(通常是16位Unicode字符)為基本單位進行數據讀寫,通常用于處理文本數據。字符流內部會自動處理字符編碼和解碼。抽象基類包括:
Reader(字符輸入流)
Writer(字符輸出流)
具體的實現類如:FileReader、FileWriter、CharArrayReader、CharArrayWriter、BufferedReader、BufferedWriter等。
按數據流向分類:
輸入流(Input Stream):數據從外部(如文件、網絡、鍵盤等)流向程序內部。
輸出流(Output Stream):數據從程序內部流向外部(如文件、網絡、顯示器等)。
按流的角色分類:
節點流(Node Stream / Device Stream):直接與數據源(如文件、網絡套接字、鍵盤、屏幕等)交互的流,如FileInputStream、FileReader等。
處理流(Wrapper Stream / Filter Stream):對其他已存在的流進行封裝,提供額外功能(如緩沖、加密、壓縮、格式化等)而不直接與數據源交互,如BufferedInputStream、BufferedReader、DataInputStream等。處理流通常采用裝飾器模式,可以動態地添加到節點流之上形成新的流對象。
按緩沖機制分類:
無緩沖流:每次讀寫操作都直接與數據源進行交互,可能會造成頻繁的系統調用,影響性能。
緩沖流(Buffered Stream):在流的讀寫操作中引入緩沖區,減少對數據源的直接訪問,提高數據讀寫效率。如BufferedInputStream、BufferedOutputStream、BufferedReader、BufferedWriter等。
?如果大家需要視頻版本的講解,歡迎關注我的B站: