Aho*_*tbi 17 java filewriter bufferedwriter printwriter
好的,我正在学习I/O,我在其中一张幻灯片中找到了以下代码.有谁可以解释为什么需要有FileWrite,BufferedWriter和PrintWriter?我知道BufferedWriter是缓冲输出并将其全部放在一起,但为什么他们会使用FileWriter和PrintWriter?他们几乎没有做同样的错误处理等一点点差异?
还有他们为什么要传递bw给他们PrintWriter?
FileWriter fw = new FileWriter (file);
BufferedWriter bw = new BufferedWriter (fw);
PrintWriter outFile = new PrintWriter (bw);
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 24
据推测他们正在使用a,FileWriter因为他们想要写入文件.双方BufferedWriter并PrintWriter必须得到另一位作家写-你需要一些最终目的地.
(我个人不喜欢,FileWriter因为它不允许你指定编码.我更喜欢使用FileOutputStream包装OutputStreamWriter,但这是另一回事.)
BufferedWriter正如你所说的,它用于缓冲 - 虽然它不会缓冲所有输出,只是它的一个固定量(缓冲区的大小).它为底层作者创建了"更大"的写作.
至于使用PrintWriter- 嗯,暴露了一些额外的方法,如println.我个人不喜欢它,因为它吞下异常(你必须明确地检查checkError,仍然没有给出细节,我不认为我曾经见过使用),但同样这取决于你在做什么.该PrintWriter传递的BufferedWriter为它的目的地.
因此,您所显示的部分下面的代码可能PrintWriter会写入,将写入BufferedWriter,将(当其缓冲区已满,或者已刷新或关闭时)写入FileWriter,然后将字符数据转换为磁盘上的字节数.
小智 6
来自Docs:
通常,Writer会立即将其输出发送到基础字符或字节流.除非需要提示输出,否则建议将BufferedWriter包装在其write()操作可能代价高昂的任何Writer周围,例如FileWriters和OutputStreamWriters.例如,
PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("foo.out")));
Run Code Online (Sandbox Code Playgroud)
将PrintWriter的输出缓冲到文件.如果没有缓冲,每次调用print()方法都会导致字符转换为字节,然后立即写入文件,这可能效率很低.
你可以从中理解a BufferedWriter是一种写东西的有效方法.
将文本写入字符输出流,缓冲字符,以便有效地写入单个字符,数组和字符串.
一个FileWriter对象被传递给,BufferedWriter因为这里的目的是使用a写入一些输出文件BufferedWriter.
最后,a PrintWriter用于print*类似的方法println().
| 归档时间: |
|
| 查看次数: |
19278 次 |
| 最近记录: |