关于read的读取机制,为什么.read配合循环while(ture) 就能依次按顺序读取,而不是无限循环第一段的1024字节的内容呢?感谢!!比如一个文档里有 1025个字节,第一次循环会取1024个字节写入写出进新文档,那为什么第二次循环的时候 他会从1025开始读1个字节进去,而不是从第一个字节重新开始读呢。谢谢
解决方案 »
- Swing内嵌浏览器问题
- ftp在上传文件时,客户端断网重连以后再发送文件就发生错误如何解决?
- help ,一个关于java与Access连接的问题
- 怎样使产生的随机数不出现重复
- 如何将TableHeader 中的文字调整为左对齐;JScrollPane加入一个背景;JScrollPane下部空白出现无规律的坚线
- 关于版面管理的问题
- JAVA中如何实现c语言中的getchar()
- 请问,在Jbuilder8中运行时出现以下信息是什么原因?怎样解决?在线等待
- 如何理解JAVA中的stream?
- 如何用source safe来管理java团队开发
- java 多线程对同一个共享数据操作遇到的问题
- 滚动字体不显示
1.在你的程序执行语句:fis = new FileInputStream("F:\\javadraft\\from.txt");后,在内存空间和文件之间就已经建立了数据传输管道;
2.在第一次循环之前,read()方法中有一个记录指针,它的指向是文件字节数据中角标为0的字节数据的前一个字节数据的地址,但是读取字节数据时,它是从角标为0的字节数据开始的;
3.第一次循环之后,read()方法将文件字节数据中角标为0~1023的字节数据读入到了字节数组中,同时将记录指针进行重新指向,即指向了角标为1023的字节数据;
4.第二次循环时,read()方法读取文件字节数据从角标为1024的字节数据开始的,但是此字节数据为该文件的最后一个.故,在此字节数据之后,读到文件结尾,返回-1.
总之,read()方法中有一个记录文件读取位置的指针,每次读取文件时该指针都会发生相应的变化.
ps:个人看法,有不周之处,希望能指出.