lyt1993
2015-06-29 13:26
采纳率: 100%
浏览 3.6k
已采纳

学习Io流用fileinputstream read用判断==-1可以读取额!=-1出现异常

package text6;

impor java.io.*;

public class Demo11_3 {

public static void main(String[] args) {

    File f=new File("f:/bb.txt");
    FileInputStream fis=null;
    try {
        //因为File没有读写的能力,所以需要使用InputStream
         fis=new FileInputStream(f);
        //定义一个字节数组,相当于缓存
        byte []bytes=new byte[1024];
        int n=0;//得到实际读取到的字节数
        while((n=fis.read(bytes))!=-1);
        {
            //把字节转成String
            String s=new String(bytes,0,n);
            System.out.println(s);
        }

    } catch (Exception e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       
    finally{
        try {
            fis.close();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

这样读取不了 而把!=-1改成==1就能读取这是为什么,视频上相反了啊。本人初学java求大神指导

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • Haisen大王 2015-06-29 14:53
    已采纳

    while((n=fis.read(bytes))!=-1); 能告诉我这个分号肿么回事吗??我日,让我瞅了好久

    点赞 打赏 评论
  • danielinbiti 2015-06-29 14:02
     while((n=fis.read(bytes))!=-1);
            {
                //把字节转成String
                String s=new String(bytes,0,n);//如果读到文件末尾n=-1,bytes数组长度没有-1,越界
                System.out.println(s);
            }
            改成
            while((n=fis.read(bytes))!=-1);
            {
                //把字节转成String
                String s=new String(bytes);
                System.out.println(s);
            }
    
    点赞 打赏 评论
  • Haisen大王 2015-06-29 14:45

    int n=0;去掉赋值

    点赞 打赏 评论
  • Soulic 2015-06-29 15:28

    把读取的代码改成下面这样

                 int n = fis.read(bytes);
                while(n != -1);
                {
                    //把字节转成String
                    String s=new String(bytes,0,n);
                    System.out.println(s);
                    n = fis.read(bytes);
                }
    
    点赞 打赏 评论
  • KangJinC 2015-06-29 15:29

    想成为一名优秀的程序员,一定要细心哦~不然就连一个小小的分号也能耗上你一天!我也常遇到这种情况~嘻嘻~~~~

    点赞 打赏 评论

相关推荐 更多相似问题