黑马程序员技术交流社区

标题: IO流中文件复制问题 [打印本页]

作者: 绝版坏银    时间: 2015-6-23 12:54
标题: IO流中文件复制问题
  1. package com.itheima_1;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.FileInputStream;
  5. import java.io.FileOutputStream;
  6. import java.io.FileReader;
  7. import java.io.FileWriter;
  8. import java.io.IOException;
  9. import java.io.InputStreamReader;
  10. import java.io.OutputStreamWriter;

  11. /*
  12. * 将一个文本文件中的内容复制到另一个文件中
  13. */
  14. public class Test6 {
  15.         public static void main(String[] args) throws IOException {
  16.                 BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream("a.txt")));               
  17.                 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt")));
  18.                
  19.                 BufferedReader br2 = new BufferedReader(new FileReader("a.txt"));
  20.                 BufferedWriter bw2 = new BufferedWriter(new FileWriter("b.txt"));
  21.                
  22.                 String line = null;
  23.                 while((line=br.readLine())!=null){
  24.                         bw.write(line);
  25.                         bw.newLine();
  26.                         bw.flush();                       
  27.                 }
  28.                
  29.                 bw.close();
  30.                 br.close();
  31.                
  32.         }
  33. }
复制代码


里面bw 和 bw2写的方式有点不明白。求解释
作者: 图图_黑马    时间: 2015-6-23 16:13
FileOutputStread pos = new FileOutputStream("b.txt");
OutputStreamWriter osw=new OutputStreamWriter(fos);
BufferedWriter bw = new BufferedWriter(osw);

这三句就等同于 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt")));

这有什么问题吗?你也可以把这一句拆分开来写,可以看下对应类的API中的构造函数
作者: 天若有晴    时间: 2015-6-23 17:10
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(new FileOutputStream("b.txt")));
1.BufferedWriter( 第一个里面也是Writer类型的,因为转换流是是其子类 )
   这个用到了转换流,OutputStreamWriter,转换流的构造参数要用(OutputStream  ops),因为FileOutputStream是OutputStream的子类,所以可以作为参数;
BufferedWriter bw2 = new BufferedWriter(new FileWriter("b.txt"));
2.这里就是普通的缓冲流创建方式。






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2