黑马程序员技术交流社区
标题:
IO流 --缓冲区复制的过程是怎么实现的?
[打印本页]
作者:
欧德林
时间:
2012-4-18 10:35
标题:
IO流 --缓冲区复制的过程是怎么实现的?
1、复制是先把文件写入内存中,然后在通过一个中转存储,然后再写入一个新文件中, 是这样的 吗?我没有看见带有直接copy的方法?
2、下面 这个String line 就是起中转站的作用吗?
3、最后那个finally 可以直接 写成 finally {bufr.close();bufw.close() }吗?为什么呢?
/*
通过缓冲区复制一个.java文件。
*/
import java.io.*;
class CopyTextByBuf
{
public static void main(String[] args)
{
BufferedReader bufr = null;
BufferedWriter bufw = null;
try
{
bufr = new BufferedReader(new FileReader("BufferedWriterDemo.java"));
bufw = new BufferedWriter(new FileWriter("bufWriter_Copy.txt"));
String line = null; //这个String line 就是中转站吗?
while((line=bufr.readLine())!=null)
{
bufw.write(line);
bufw.newLine();
bufw.flush();
}
}
catch (IOException e)
{
throw new RuntimeException("读写失败");
}
finally
{
try
{
if(bufr!=null)
bufr.close();
}
catch (IOException e)
{
throw new RuntimeException("读取关闭失败");
}
try
{
if(bufw!=null)
bufw.close();
}
catch (IOException e)
{
throw new RuntimeException("写入关闭失败");
}
}
}
}
作者:
τ、高童鞋ゝ
时间:
2012-4-18 10:50
String line = null; //这个String line 就是中转站吗?
是的,原理如毕老师视频中画的IO流程图一样,把图附上请作为参考。
copyIO流程图.jpg
(62.73 KB, 下载次数: 16)
下载附件
2012-4-18 10:48 上传
作者:
伊文龙
时间:
2012-4-18 10:52
1.复制文件是一边读取源文件写到内存中,一遍从内存中把读取到的数据写到目标文件的的一个过程
2.String类型的line可以理解为一个中转站
3.finally里面的语句不管前面有木有异常,都会在最后被执行到,所以很多时候都把关闭的语句放在finally语句里面,防止前面抛出异常导致输入输出流无法关闭。
作者:
张明星
时间:
2012-4-18 11:14
是中转站,这个程序 读一行 然后写一行 ,中转站是io缓冲区,也就是内存中的一块
public void close()
throws IOException 也就是说close()方法抛出IOException异常,所以必须有捕获机制哦
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2