首頁  >  文章  >  Java  >  Java I/O流是如何進行流轉換的?

Java I/O流是如何進行流轉換的?

WBOY
WBOY原創
2024-04-13 11:45:01567瀏覽

Java I/O流轉換將一種流轉換為另一種流,以改變資料格式。預先定義的流轉換:提供了BufferedReader、BufferedWriter等類,可以轉換位元組流和字元流。自訂流轉換:使用Reader/Writer介面和FilterInputStream/FilterOutputStream類別編寫,滿足特定需求。

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

Java I/O串流的串流轉換

簡介

##Java I /O流轉換是指將一種類型的流轉換為另一種類型的流。這通常是為了將資料從一種格式轉換為另一種格式而必要的。 Java提供了多種預先定義的流轉換,也可以使用特定的轉換器編寫自訂流轉換。

預先定義的流轉換

Java提供了幾個預先定義的流轉換類,包括:

  • BufferedReader :將位元組流轉換為字元流。
  • BufferedWriter:將字元流轉換為位元組流。
  • DataInputStream:將位元組流轉換為資料輸入流。
  • DataOutputStream:將資料輸出流轉換為位元組流。
  • ObjectInputStream:將位元組流轉換為物件輸入流。
  • ObjectOutputStream:將物件輸出流轉換為位元組流。

使用預先定義的流轉換

使用預先定義的流轉換非常簡單。只需使用適當的建構函數建立轉換流,並將輸入流作為參數傳遞即可。例如:

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

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

自訂流轉換

有時候,預先定義的流轉換無法滿足特定需求。在這種情況下,可以編寫自訂流轉換。為此,需要使用

ReaderWriter介面和FilterInputStreamFilterOutputStream類別。例如:

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

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

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

實戰案例

以下是讀取文字檔案並將其內容轉換​​為大寫字元的範例:

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

以上是Java I/O流是如何進行流轉換的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn