Maison  >  Article  >  Java  >  Comment le codage et le décodage d'octets sont-ils implémentés dans les flux d'E/S Java ?

Comment le codage et le décodage d'octets sont-ils implémentés dans les flux d'E/S Java ?

WBOY
WBOYoriginal
2024-04-13 21:54:011149parcourir

Dans les flux d'E/S Java, l'encodage convertit les données de caractères en données binaires et le décodage convertit les données binaires en données de caractères. Encodage : utilisez Charset.forName() pour obtenir l'encodage, puis utilisez Charset.encode() pour encoder les données de caractères dans un tableau d'octets. Décodage : utilisez CharsetDecoder.decode() pour décoder le tableau d'octets en données de caractères. Cas pratique : utilisez BufferedWriter/BufferedReader combiné avec Charset pour lire et écrire des fichiers texte, et spécifiez le format d'encodage pour garantir une conversion correcte des données.

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

Encodage et décodage d'octets dans les flux d'E/S Java

Dans les flux d'E/S Java, l'encodage et le décodage d'octets font référence au processus de conversion de données binaires en données de caractères ou vice versa. Java fournit une variété de classes et de méthodes pour effectuer cette tâche.

Encodage : données de caractères en données binaires

Pour encoder des données de caractères en données binaires, vous pouvez utiliser la classe Charset dans le package java.nio.charset. Voici un exemple d'encodage : 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.txtrrreee

Cet exemple encode la chaîne "Hello World" dans un tableau d'octets codé en UTF-8. 🎜🎜🎜Décodage : données binaires en données de caractères🎜🎜🎜Pour décoder des données binaires en données de caractères, vous pouvez utiliser la classe CharsetDecoder dans le package java.nio.charset. Voici un exemple de décodage : 🎜rrreee🎜Cet exemple décode un tableau d'octets codé en UTF-8 dans la chaîne "Hello World". 🎜🎜🎜Cas pratique : lecture et écriture de fichiers texte🎜🎜🎜Le code suivant montre comment utiliser le codage et le décodage d'octets pour lire et écrire des fichiers texte : 🎜rrreee🎜Ce code convertira la chaîne "Hello World" en écriture UTF-8 encodage dans le fichier text.txt, puis lisez et affichez le contenu du fichier en encodage UTF-8. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn