簡體   English   中英

我們可以使用 BufferedReader 讀取文件並使用 BufferedOutputStream 將內容寫入另一個文件嗎? 反之亦然

[英]Can we read a file using BufferedReader and write the content to another file using BufferedOutputStream? and vice versa

我正在學習 java io 概念,我需要澄清一個疑問。

我正在嘗試使用像 BufferedReader 這樣的閱讀器讀取文件,並將其寫入像 BufferedOutputstream 這樣的 OutputStream。 這是我的代碼示例。

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.FileReader;

public class ReaderToStream
{
    public static void main(String[] args)throws Exception 
    {
        BufferedReader br = new BufferedReader(new FileReader(new File("f1.txt")));
        BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("f2.txt")));
        
        int ch = 0;
        
        while((ch=br.read())!=-1)
        {
            bos.write(ch);
        }
        
        
        bos.close();
        br.close();
    }
}

我知道閱讀器讀取字符和 output stream 寫入字節,但是我們如何才能完美地處理它,因為當我的文件有正常的英文字符時,沒有問題,但是當我有符號或其他語言字符時(例如காலை வணக்கம்,早上好)它將文本復制到一些隨機文本(如æ©ä`好)。

誰能幫助我深入了解這些主題?

感謝您的幫助,如果被問到任何愚蠢的問題,我們深表歉意。

您可以使用名為OutputStreamWriter適配器設計模式實現。

OutputStreamWriter 是從字符流到字節流的橋梁

您使用此 class 的代碼片段如下所示:

BufferedReader br = new BufferedReader(new FileReader("f1.txt"));
OutputStreamWriter out = new OutputStreamWriter(
    new BufferedOutputStream(new FileOutputStream("f2.txt"))
);     
int ch;
while ((ch = br.read()) != -1) {
    out.write(ch);
}
br.close();
out.close();

此外,您可以指定編碼:

Charset oneWay = Charset.forName("UTF-8");
Charset anotherWay = StandardCharsets.UTF_8;
OutputStreamWriter out1 = new OutputStreamWriter(..., oneWay);
OutputStreamWriter out2 = new OutputStreamWriter(..., anotherWay);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM