我们可以使用 BufferedReader 读取文件并使用 BufferedOutputStream 将内容写入另一个文件吗?反之亦然
Can we read a file using BufferedReader and write the content to another file using BufferedOutputStream? and vice versa
我正在学习 java io 概念,我需要澄清一个疑问。
我正在尝试使用像 BufferedReader 这样的 reader 读取文件,并像 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();
}
}
我知道reader读入的是字符,输出流是字节写的,但是怎么才能完美处理呢,因为当我的文件有正常的英文字符时,没有问题,但是当我有符号或其他语言字符(例如 காலை வணக்கம், 早上好)它将文本复制到一些随机文本(如 æ©ä`好)。
任何人都可以帮助我清楚深入地理解这些主题吗?
感谢您的帮助,如果有任何愚蠢的问题,我们深表歉意。
您可以使用 adapter design pattern implementation called OutputStreamWriter.
An OutputStreamWriter is a bridge from character streams to byte streams
您使用此 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);
我正在学习 java io 概念,我需要澄清一个疑问。
我正在尝试使用像 BufferedReader 这样的 reader 读取文件,并像 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();
}
}
我知道reader读入的是字符,输出流是字节写的,但是怎么才能完美处理呢,因为当我的文件有正常的英文字符时,没有问题,但是当我有符号或其他语言字符(例如 காலை வணக்கம், 早上好)它将文本复制到一些随机文本(如 æ©ä`好)。
任何人都可以帮助我清楚深入地理解这些主题吗?
感谢您的帮助,如果有任何愚蠢的问题,我们深表歉意。
您可以使用 adapter design pattern implementation called OutputStreamWriter.
An OutputStreamWriter is a bridge from character streams to byte streams
您使用此 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);