Home  >  Article  >  Java  >  How is byte encoding and decoding implemented in Java I/O streams?

How is byte encoding and decoding implemented in Java I/O streams?

WBOY
WBOYOriginal
2024-04-13 21:54:011150browse

In Java I/O streams, encoding converts character data into binary data, and decoding converts binary data into character data. Encoding: Use Charset.forName() to obtain the encoding, then use Charset.encode() to encode the character data into a byte array. Decoding: Use CharsetDecoder.decode() to decode the byte array into character data. Practical case: Use BufferedWriter/BufferedReader combined with Charset to read and write text files, and specify the encoding format to ensure correct conversion of data.

Java I/O流中的字节编码与解码是如何实现的?

Byte encoding and decoding in Java I/O streams

In Java I/O streams, byte encoding And decoding refers to the process of converting binary data into character data or vice versa. Java provides a variety of classes and methods to perform this task.

Encoding: character data to binary data

To encode character data into binary data, you can use the java.nio.charset package Charset Class. The following is an encoding example:

Charset charset = Charset.forName("UTF-8");
byte[] bytes = charset.encode("Hello World").array();

This example encodes the string "Hello World" into a UTF-8 encoded byte array.

Decoding: Binary data to character data

To decode binary data into character data, you can use the java.nio.charset package CharsetDecoder Class. The following is a decoding example:

CharsetDecoder decoder = charset.newDecoder();
String decodedString = decoder.decode(ByteBuffer.wrap(bytes)).toString();

This example decodes a UTF-8 encoded byte array into the string "Hello World".

Practical case: reading and writing text files

The following code demonstrates how to use byte encoding and decoding to read and write text files:

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();
        }
    }
}

This code will write the string "Hello World" to the text.txt file in UTF-8 encoding, and then read and output the contents of the file in UTF-8 encoding.

The above is the detailed content of How is byte encoding and decoding implemented in Java I/O streams?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn