在 Java I/O 流中,編碼將字元資料轉換為二進位數據,解碼將二進位資料轉換為字元資料。編碼:使用 Charset.forName() 取得編碼,然後使用 Charset.encode() 將字元資料編碼為位元組數組。解碼:使用 CharsetDecoder.decode() 將位元組數組解碼為字元資料。實戰案例:使用 BufferedWriter/BufferedReader 結合 Charset 實作文字檔案的讀寫,指定編碼格式保證資料的正確轉換。
Java I/O串流中的位元組編碼與解碼
在Java I/O 流中,位元組編碼和解碼是指將二進位資料轉換為字元資料或相反的過程。 Java 提供了多種類和方法來執行此任務。
編碼:字元資料到二進位資料
要將字元資料編碼為二進位數據,可以使用java.nio.charset
套件中的Charset
類別。以下是編碼範例:
Charset charset = Charset.forName("UTF-8"); byte[] bytes = charset.encode("Hello World").array();
該範例將字串 "Hello World" 編碼為 UTF-8 編碼的位元組數組。
解碼:二進位資料到字元資料
要將二進位資料解碼為字元數據,可以使用java.nio.charset
套件中的CharsetDecoder
類別。以下是解碼範例:
CharsetDecoder decoder = charset.newDecoder(); String decodedString = decoder.decode(ByteBuffer.wrap(bytes)).toString();
此範例將 UTF-8 編碼的位元組陣列解碼為字串 "Hello World"。
實戰案例:讀取和寫入文字檔案
以下程式碼示範如何使用位元組編碼和解碼來讀取和寫入文字檔案:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.nio.charset.Charset; public class Main { public static void main(String[] args) { // 编码:将字符串写入文本文件 try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("text.txt"), Charset.forName("UTF-8")))) { writer.write("Hello World"); } catch (IOException e) { e.printStackTrace(); } // 解码:读取文本文件中的字符串 try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream("text.txt"), Charset.forName("UTF-8")))) { String line; while ((line = reader.readLine()) != null) { System.out.println(line); } } catch (IOException e) { e.printStackTrace(); } } }
此程式碼會將字串"Hello World" 以UTF-8 編碼寫入text.txt
文件,然後以UTF-8 編碼讀取並輸出文件中的內容。
以上是Java I/O流中的位元組編碼與解碼是如何實現的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!