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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© jing迪 高级黑马   /  2014-1-7 02:16  /  1167 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 jing迪 于 2014-1-8 15:08 编辑
  1. import java.io.BufferedReader;
  2. import java.io.BufferedWriter;
  3. import java.io.FileReader;
  4. import java.io.FileWriter;
  5. import java.io.IOException;

  6. public class BufferedDemo {

  7.         public static void main(String[] args) throws IOException {
  8.                 BufferedReader br = new BufferedReader(new FileReader("fw2.txt"));
  9.                 BufferedWriter bw = new BufferedWriter(new FileWriter("fw7.txt"));
  10.                

  11.                 char[] chs = new char[1024];
  12.                 int len = 0;
  13.                 while((len=br.read(chs))!=1){
  14.                         bw.write(chs,0,len);
  15.                         bw.flush();
  16.                 }
  17.                 bw.close();
  18.                 br.close();
  19.         }

  20. }
复制代码



这个代码报错
Exception in thread "main" java.lang.IndexOutOfBoundsException
        at java.io.BufferedWriter.write(BufferedWriter.java:178)
        at cn.itcast_03.BufferedDemo.main(BufferedDemo.java:19)
为啥呀??????

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 神马都是浮云

查看全部评分

5 个回复

倒序浏览
-1
while((len=br.read(chs))!=-1)
回复 使用道具 举报
本帖最后由 猎鹰tianya 于 2014-1-7 08:33 编辑
函数read(char[] cbuf)返回读到的字符数,要是没读到内容则返回-1
  1.                 while ((len = br.read(chs)) != -1) {
  2.                         bw.write(chs, 0, len);
  3.                         bw.flush();

  4.                 }
复制代码

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 淡定

查看全部评分

回复 使用道具 举报
Exception in thread "main" java.lang.IndexOutOfBoundsException
        at java.io.BufferedWriter.write(BufferedWriter.java:178)
        at cn.itcast_03.BufferedDemo.main(BufferedDemo.java:19)
这个错误是说数组越界了

正确写法
              while((len=br.read(chs))!=-1){        //!=1改为!=-1因为当没有内                                   
                                                                 //容复制的时候返回的是-1
                        bw.write(chs,0,len);
                        bw.flush();
                }

评分

参与人数 1技术分 +1 收起 理由
FFF + 1 赞一个!

查看全部评分

回复 使用道具 举报
是-1 哥们
回复 使用道具 举报
汗   我咋说不对呢   看半天还 谢谢啦~!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马