Java中讀寫文件時需要用到輸入流和輸出流,其中字節流和字符流是最基本的兩種流。在進行文件操作時,需要根據實際需求選擇適當的流進行操作。
字節流使用InputStream和OutputStream,可以讀取和寫入8 bit字節,適合于處理二進制文件或者文本文件中的字節流。字節流適用于處理圖片、音頻、視頻等文件,但是不適合處理純文本。
//讀取文件中的字節流 try (InputStream in = new FileInputStream("test.txt")) { byte[] bytes = new byte[1024]; int len = -1; while ((len = in.read(bytes)) != -1) { System.out.println(new String(bytes, 0, len)); } } catch (IOException e) { e.printStackTrace(); } //寫入字節到文件中 try (OutputStream out = new FileOutputStream("test.txt")) { String str = "Hello World!"; byte[] bytes = str.getBytes(); out.write(bytes); } catch (IOException e) { e.printStackTrace(); }
字符流使用Reader和Writer,可以讀取和寫入16 bit Unicode字符,適合于處理文本文件。字符流以字符為單位進行操作,可以自動進行字符編碼轉換,更適合處理中文或者其他Unicode字符集的純文本。
//讀取文件中的字符流 try (Reader reader = new FileReader("test.txt")) { char[] chars = new char[1024]; int len = -1; while ((len = reader.read(chars)) != -1) { System.out.println(new String(chars, 0, len)); } } catch (IOException e) { e.printStackTrace(); } //寫入字符到文件中 try (Writer writer = new FileWriter("test.txt")) { String str = "Hello World!"; writer.write(str); } catch (IOException e) { e.printStackTrace(); }
總之,在使用Java進行文件操作時,字節流主要用于處理二進制文件和文本文件中的字節流,字符流主要用于處理純文本文件。