Rumah  >  Artikel  >  Java  >  Bagaimanakah aliran Java I/O melakukan penukaran strim?

Bagaimanakah aliran Java I/O melakukan penukaran strim?

WBOY
WBOYasal
2024-04-13 11:45:01516semak imbas

Penukaran strim I/O Java menukar satu strim kepada strim lain untuk menukar format data. Penukaran strim pratakrif: BufferedReader, BufferedWriter dan kelas lain disediakan untuk menukar strim bait dan strim aksara. Penukaran strim tersuai: ditulis menggunakan antara muka Pembaca/Penulis dan kelas FilterInputStream/FilterOutputStream untuk memenuhi keperluan khusus.

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

Penukaran Strim Java I/O Streams

Pengenalan

Penukaran strim Java I/O merujuk kepada menukar satu jenis strim kepada jenis strim yang lain. Ini selalunya diperlukan untuk menukar data dari satu format ke format yang lain. Java menyediakan pelbagai transformasi strim yang dipratentukan, dan anda juga boleh menulis transformasi strim tersuai menggunakan penukar tertentu.

Penukaran strim pratakrif

Java menyediakan beberapa kelas penukaran strim pratakrif, termasuk:

  • BufferedReader: Tukar strim bait kepada strim aksara.
  • BufferedWriter: Tukar strim aksara kepada strim bait.
  • DataInputStream: Tukar strim bait kepada strim input data.
  • DataOutputStream: Tukar strim output data kepada strim bait.
  • ObjectInputStream: Tukar strim bait kepada strim input objek.
  • ObjectOutputStream: Tukar strim output objek kepada strim bait.

Gunakan transformasi strim pratakrif

Menggunakan transformasi strim pratakrif adalah sangat mudah. Hanya buat aliran transformasi menggunakan pembina yang sesuai dan lulus aliran input sebagai parameter. Contohnya:

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

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

Transformasi strim tersuai

Kadangkala, transformasi strim yang dipratentukan tidak memenuhi keperluan khusus. Dalam kes ini, anda boleh menulis transformasi strim tersuai. Untuk melakukan ini, gunakan kelas ReaderWriter接口和FilterInputStreamFilterOutputStream. Contohnya:

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

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

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

Kes praktikal

Berikut ialah contoh membaca fail teks dan menukar kandungannya kepada aksara besar:

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

Atas ialah kandungan terperinci Bagaimanakah aliran Java I/O melakukan penukaran strim?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn