本帖最后由 小黑子 于 2014-10-10 11:46 编辑
写了一个用缓冲区,将一个文本复制到另一个文本的小代码
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.IOException;
- class BufferedDemo
- {
- public static void main(String[] args)
- {
- FileReader fr = null;
- FileWriter fw = null;
- BufferedReader br = null;
- BufferedWriter bw = null;
- try
- {
- fr = new FileReader("RuntimeDemo.java");
- fw = new FileWriter("F:/RuntimeDemo.txt");
- br = new BufferedReader(fr);
- bw = new BufferedWriter(fw);
- for(String line;(line=br.readLine())!=null;)
- {
- bw.write(line);
- bw.newLine();
- bw.flush();
- }
- }
- catch (IOException ioe)
- {
- throw new RuntimeException("文件读写异常");
- }
- finally
- {
- if (fr!=null)
- {
- try
- {
- fr.close();
- }
- catch (IOException ioe)
- {
- throw new RuntimeException("读文件关闭异常");
- }
- }
- if (bw!=null)
- {
- try
- {
- br.close();
- }
- catch (IOException ioe)
- {
- throw new RuntimeException("写文件关闭异常");
- }
- }
- }
- }
- }
复制代码
我想知道,这个流关闭的时候到底怎么关呢?因为建立了四个流对象。
所以,有没这种可能:fr对象确实建立了,而br建立失败呢?
这样的话,finally中用下边代码关闭流是不是会更合适(因为我理解的是:br.close()调用的就是fr.close(),所以是不是,用fr关了,br就不用关了?)?
finally
{
if (fr!=null)
{
try
{
fr.close();
}
catch (IOException ioe)
{
throw new RuntimeException("读文件关闭异常");
}
}
}
======================================================
我想知道最专业的处理方式在建立对象上改进还是在关闭流上改进?是如何改的呢?
|