A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

©   /  2013-5-27 18:31  /  1935 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

那是因为charArrayWriter类中的writeTo()方法是将缓冲区的内容写入另一个字符流,以你的代码,内容还在new出来的FileWriter字符流中,没有刷新它自然不会写入到目的文件。代码应该改成这样就好了:
  1. import java.io.ByteArrayInputStream;
  2. import java.io.CharArrayReader;
  3. import java.io.CharArrayWriter;
  4. import java.io.FileWriter;
  5. import java.io.IOException;

  6. public class Main {

  7.         public static void main(String[] args) {

  8.                 CharArrayReader car=new CharArrayReader("abcdef".toCharArray());
  9.                 CharArrayWriter caw=new CharArrayWriter();
  10.                 FileWriter fw = null;
  11.                 int c=0;
  12.                 try {
  13.                         while((c=car.read())!=-1){
  14.                                 caw.write(c);
  15.                         }
  16.                         
  17.                         fw = new FileWriter("D:\\charArray.txt");
  18.                         System.out.println(caw.toString());
  19.                         caw.writeTo(fw);
  20.                         fw.close();
  21.                         System.out.println("write char complete");
  22.                 } catch (IOException e) {
  23.                         e.printStackTrace();
  24.                 }

  25.         }

  26. }
复制代码
回复 使用道具 举报
lpflpy 发表于 2013-5-27 20:39
caw.writeTo(new FileWriter("D:\\charArray.txt"));    我看了下API文档,是写入流中的,所以我加了 ...

既然都查看了API文档,居然还没发现问题......,原因是什么看我上面的回复。其实你都已经解决了问题了。
回复 使用道具 举报
lpflpy 发表于 2013-5-27 20:48
嗯,多谢 io学的不好
fw = new FileWriter("D:\\charArray.txt");
    caw.writeTo(fw);

我是为了能调用FileWriter的flush和close方法才写成非匿名的。在匿名的情况下,很明显调用不了。你给出的代码中不也是写成了非匿名的了吗?
回复 使用道具 举报
lpflpy 发表于 2013-5-27 21:16
哦,我明白了。如果匿名的话,不调close(),所以不会刷新。在调用close()方法的时候会自动刷新,所以不 ...

嗯,是的。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马