public void duxie(File fi) throws Exception{
Reader reader = null;
Writer writer = null;
File file = new File(fi.toString());
reader = new BufferedReader(new FileReader(file));

file = new File("e:/b.txt");
writer = new BufferedWriter(new FileWriter(file));
char[] buff = new char[1024];
for (int i = 0; (i = reader.read(buff)) > 0;) {
System.out.println(i);
writer.write(buff, 0, i);
}

reader.close();
writer.close();
}我想问的是   writer.write(buff, 0, i);
为什么这能写进去?
char[] buff = new char[1024]; 它  只是  一个  char 的数组 啊
是  这步  reader.read(buff)  能 把  文件 写入到  buff ?
而且  1024  为什么要  这个数字 ? 是必须的?

解决方案 »

  1.   

    i = reader.read(buff) 从输入流读取 长度i的 char[] 到 buff.
    writer.writer(buff,0,i) 将buff中从0到i的内容写道输出流。
    1024只是缓冲区长度1k = 2^10
      

  2.   

    那  再问一下 
    writer.writer(buff)改成这样 写  有什么问题吗?
      

  3.   

    有时可能读不满1024,你直接写buff,没数据那部分也会被写进文件,这样可能出现问题的!
      

  4.   

    BufferedWriter 
    里面也有 write(char[] cbuf, int off, int len) 
              写入字符数组的某一部分。  方法
    上面的 代码我是网上 找来的
    为什么要 创建一个 Writer 然后  再   用 write 方法
      

  5.   

    不然你想怎么用write方法?
    对象.方法()
      

  6.   

    我意思 是  BufferedWriter br = new BufferedWriter(); 创建一个对象 然后调用
    br.write(char[] cbuf, int off, int len)
    这个方法      和     Writer writer对象的write(char[] cbuf, int off, int len)
    的区别    
      

  7.   

    reader.read(buff)读了数据进buff
    所以下面的writer肯定能输出到文件了