Java IO是Java核心API中的一個重要模塊,它提供了許多類用于讀寫數據,主要包括字節流和字符流兩種類型,本文將介紹這兩種流的區別和使用。
字節流是以字節(byte)為單位進行讀寫的,主要包括InputStream
和OutputStream
兩類。使用字節流可以讀寫任意類型的數據,例如圖像、音頻等二進制文件。
try (InputStream in = new FileInputStream("test.jpg")) { byte[] buffer = new byte[1024]; int len; while ((len = in.read(buffer)) >0) { // TODO: 處理讀取的字節數據 } } catch (IOException e) { e.printStackTrace(); }
字符流是以字符(char)為單位進行讀寫的,主要包括Reader
和Writer
兩類。使用字符流可以方便地讀寫文本文件。
try (Reader reader = new FileReader("test.txt")) { char[] buffer = new char[1024]; int len; while ((len = reader.read(buffer)) >0) { // TODO: 處理讀取的字符數據 } } catch (IOException e) { e.printStackTrace(); }
需要注意的是,字符流使用的編碼方式是由InputStreamReader
和OutputStreamWriter
來指定的,默認是按照系統編碼方式進行讀寫。如果要指定其他編碼方式,需要手動創建相應的編碼器。
try (Reader reader = new InputStreamReader(new FileInputStream("test.txt"), StandardCharsets.UTF_8)) { // TODO: 使用UTF-8編碼方式讀取文件內容 } catch (IOException e) { e.printStackTrace(); }
在使用IO流時,需要注意及時關閉流資源,可以使用try-with-resources語句自動關閉流。
總的來說,字節流適用于讀寫任意類型的數據,而字符流適用于讀寫文本數據。