while((n=fis.read(bytes))!=-1)主要是这个while循环,它会读取1024byte的数据填充bytes数组,然后返回值是读取的byte数,这时类内部会有个pos标记,记录文件读取到的位置。然后继续从该位置处继续读取数据填充bytes数组,知道到达文件末尾返回-1,结束循环。

解决方案 »

  1.   

    如果用UTF-8保存一篇很长的中文的文章,然后用这个程序取读取,你就会发现会打印出错的,这里涉及到编码的知识。
    然后你把这个1024改成不同的值,1,2,3,4,5,,看看是什么结果
      

  2.   

    1. 为什么?
    这个需要用编码的原理来解释,一言难尽,有兴趣可以取搜索这方面的资料学习。2. 怎么办?
    用BufferedReader,Scanner来读取文件,BufferedReader.readLine(),Scanner.nextLine(),具体的网上有很多例子,也可以看JDK帮助文档。