按流的方向分類:
? ? ? ? 輸入流:數據流向是數據源到程序(以InputStream、Reader結尾的流)。
? ? ? ? 輸出流:數據流向是程序到目的地(以OutputStream、Writer結尾的流)。
按處理的數據單元分類:
? ? ? ? 字節流:以字節為單位獲取數據,命名上以Stream結尾的流一般是字節流,如FileInputStream、FileOutputStream。
? ? ? ? 字符流:以字符為單位獲取數據,命名上以Reader/Writer結尾的流一般是字符流,如FileReader、FileWriter。
按處理對象不同分類:
? ? ? ? 節點流:可以直接從數據源或目的地讀寫數據,如FileInputStream、FileReader、DataInputStream等。
? ? ? ? 處理流:不直接連接到數據源或目的地,是“處理流的流”。通過對其他流的處理提高程序的性能,如BufferedInputStream、BufferedReader等。處理流也叫包裝流。
節點流處于IO操作的第一線,所有操作必須通過它們進行;處理流可以對節點流進行包裝,提高性能或提高程序的靈活性。