Java 为什么FileOutputStream';s write()方法写入字符,但输出StreamWriter';s不能吗?
(一) (二)Java 为什么FileOutputStream';s write()方法写入字符,但输出StreamWriter';s不能吗?,java,Java,(一) (二) (2) 可以成功写入“a”,但(1)不能。谁能告诉我为什么 它们都可以将字节/字符写入文件(在OutputStream的情况下,您实际上正在编写字节,并且使用Writerachar) 您的特殊问题是,您没有关闭输出流(),为了将数据刷新到磁盘,您应该始终这样做 写入程序有一个小缓冲区。您可以通过调用或关闭来强制刷新 FileOutputStream fos = new FileOutputStream("B.txt"); fos.write('a'); 或者更好: Output
(2) 可以成功写入“a”,但(1)不能。谁能告诉我为什么 它们都可以将字节/字符写入文件(在
OutputStream
的情况下,您实际上正在编写字节
,并且使用Writer
achar
)
您的特殊问题是,您没有关闭输出流(),为了将数据刷新到磁盘,您应该始终这样做
写入程序
有一个小缓冲区。您可以通过调用或关闭来强制刷新
FileOutputStream fos = new FileOutputStream("B.txt");
fos.write('a');
或者更好:
OutputStreamWriter ows = new OutputStreamWriter(new FileOutputStream("a.txt"));
ows.write('a');
ows.close();
FileOutputStream fos = new FileOutputStream("b.txt");
fos.write('b');
fos.close();
…因为Java的架构师就是这样设计的
OutputStreamWriter
在其构造函数中获取一个FileOutputStream
。因此,如果您想在OSW
中写入一个字符,您当然可以通过在上面的代码片段中创建的FOS
来完成。@daniu您的答案出了什么问题?在B.txt文件中,可以显示“a”,但a.txt不能。但论点是一样的@Tim Biegelesen
OutputStreamWriter ows = new OutputStreamWriter(new FileOutputStream("a.txt"));
ows.write('a');
ows.close();
FileOutputStream fos = new FileOutputStream("b.txt");
fos.write('b');
fos.close();
try (OutputStreamWriter ows = new OutputStreamWriter(new FileOutputStream("a.txt"))) {
ows.write('a');
}
try (FileOutputStream fos = new FileOutputStream("b.txt")) {
fos.write('b');
}