Maison  >  Article  >  Java  >  Comment le flux d’E/S Java effectue-t-il la conversion de flux ?

Comment le flux d’E/S Java effectue-t-il la conversion de flux ?

WBOY
WBOYoriginal
2024-04-13 11:45:01514parcourir

La conversion de flux d'E/S Java convertit un flux en un autre flux pour modifier le format des données. Conversion de flux prédéfinie : BufferedReader, BufferedWriter et d'autres classes sont fournies pour convertir les flux d'octets et les flux de caractères. Conversion de flux personnalisée : écrite à l'aide de l'interface Reader/Writer et de la classe FilterInputStream/FilterOutputStream pour répondre à des besoins spécifiques.

Java I/O流是如何进行流转换的?

Conversion de flux de flux d'E/S Java

Introduction

La conversion de flux d'E/S Java fait référence à la conversion d'un type de flux en un autre type de flux. Cela est souvent nécessaire pour convertir des données d'un format à un autre. Java fournit une variété de transformations de flux prédéfinies et vous pouvez également écrire des transformations de flux personnalisées à l'aide de convertisseurs spécifiques.

Conversions de flux prédéfinies

Java fournit plusieurs classes de conversion de flux prédéfinies, notamment :

  • BufferedReader : Convertir le flux d'octets en flux de caractères.
  • BufferedWriter : Convertissez le flux de caractères en flux d'octets.
  • DataInputStream : Convertissez le flux d'octets en flux d'entrée de données.
  • DataOutputStream : Convertissez le flux de sortie de données en flux d'octets.
  • ObjectInputStream : Convertissez le flux d'octets en flux d'entrée d'objet.
  • ObjectOutputStream : Convertissez le flux de sortie d'objet en flux d'octets.

Utiliser des transformations de flux prédéfinies

L'utilisation de transformations de flux prédéfinies est très simple. Créez simplement le flux de transformation en utilisant le constructeur approprié et transmettez le flux d'entrée en tant que paramètre. Par exemple :

// 将字节流转换为字符流
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));

// 将字符流转换为字节流
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(System.out));

Transformation de flux personnalisée

Parfois, les transformations de flux prédéfinies ne répondent pas à des besoins spécifiques. Dans ce cas, vous pouvez écrire une transformation de flux personnalisée. Pour ce faire, utilisez la classe ReaderWriter接口和FilterInputStreamFilterOutputStream. Par exemple :

// 创建一个自定义流转换,将大写字符转换为小写字符
class LowerCaseOutputStream extends FilterOutputStream {

    public LowerCaseOutputStream(OutputStream out) {
        super(out);
    }

    @Override
    public void write(int b) {
        super.write(Character.toLowerCase((char) b));
    }
}

Cas pratique

Voici un exemple de lecture d'un fichier texte et de conversion de son contenu en caractères majuscules :

import java.io.*;

public class ConvertToUpperCase {

    public static void main(String[] args) {
        try {
            // 创建一个文件输入流
            FileInputStream inputStream = new FileInputStream("input.txt");
            
            // 将文件输入流转换为字符流
            InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
            
            // 将字符流转换为大小写转换流
            BufferedReader reader = new BufferedReader(inputStreamReader);
            
            // 创建一个文件输出流
            FileOutputStream outputStream = new FileOutputStream("output.txt");
            
            // 将文件输出流转换为大小写转换流
            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream);
            
            // 将输入流中的字符读入缓冲区,并将其转换为大写
            String line;
            while ((line = reader.readLine()) != null) {
                outputStreamWriter.write(line.toUpperCase());
            }
            
            // 关闭流
            reader.close();
            outputStreamWriter.close();
            
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

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