java的輸入和輸出為什么要那么復雜?
Java的IO設計的確很復雜,很多朋友在使用時IO時被各種各樣的流弄的暈頭轉向。
大致情況如下
以Stream結尾的為字節流,以Writer或者Reader結尾的為字符流,所有的輸入流都是抽象類IuputStream(字節輸入流)或者抽象類Reader(字符輸入流)的子類。所有的輸出流都是抽象類OutputStream(字節輸出流)或者抽象類Writer(字符輸出流)的子類之所以IO那么復雜,是為了更好的應對各種場景,比如
BufferedWriter 從字符輸入流中讀取文本,緩沖各個字符,從而實現字符、數組和行的高效讀取。由于繼承了FilterInputStream,其可用于包裝裝飾其他流使它們提高效率,既采用了裝飾設計模式。InputStreamReader和OutputStreamWriter轉換流,作為字符和字節的橋梁對象操作流ObjectInputStream和ObjectOutputStream用于Java 對象的基本數據類型和圖形讀寫。用于操作數組ByteArrayInputStream,字符串StringWriter等流區分技巧,下面分享下我找到的一份IO使用技巧總結
IO設計非常復雜不過其目標還是為了能更好的應對各種場景使用更適合的流提高效率。希望我的回答對你有所幫助。