社区
Java SE
帖子详情
小白请教下Java里 FileInputStream.read读取机制的问题。
W406990194
2017-11-25 05:28:33
关于read的读取机制,为什么.read配合循环while(ture) 就能依次按顺序读取,而不是无限循环第一段的1024字节的内容呢?感谢!!
比如一个文档里有 1025个字节,第一次循环会取1024个字节写入写出进新文档,那为什么第二次循环的时候 他会从1025开始读1个字节进去,而不是从第一个字节重新开始读呢。谢谢
...全文
549
5
打赏
收藏
小白请教下Java里 FileInputStream.read读取机制的问题。
关于read的读取机制,为什么.read配合循环while(ture) 就能依次按顺序读取,而不是无限循环第一段的1024字节的内容呢?感谢!! 比如一个文档里有 1025个字节,第一次循环会取1024个字节写入写出进新文档,那为什么第二次循环的时候 他会从1025开始读1个字节进去,而不是从第一个字节重新开始读呢。谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xzy562498146
2017-11-27
打赏
举报
回复
一楼正解
_小小咔啦咪
2017-11-27
打赏
举报
回复
一楼说的比较好,我也说一下我的看法: 1.在你的程序执行语句:fis = new FileInputStream("F:\\javadraft\\from.txt");后,在内存空间和文件之间就已经建立了数据传输管道; 2.在第一次循环之前,read()方法中有一个记录指针,它的指向是文件字节数据中角标为0的字节数据的前一个字节数据的地址,但是读取字节数据时,它是从角标为0的字节数据开始的; 3.第一次循环之后,read()方法将文件字节数据中角标为0~1023的字节数据读入到了字节数组中,同时将记录指针进行重新指向,即指向了角标为1023的字节数据; 4.第二次循环时,read()方法读取文件字节数据从角标为1024的字节数据开始的,但是此字节数据为该文件的最后一个.故,在此字节数据之后,读到文件结尾,返回-1. 总之,read()方法中有一个记录文件读取位置的指针,每次读取文件时该指针都会发生相应的变化. ps:个人看法,有不周之处,希望能指出.
「已注销」
2017-11-27
打赏
举报
回复
read的时候回返回一个int的值.这个值是你读取的长度
天之上有什么
2017-11-26
打赏
举报
回复
read是只要有就会继续读下去,读取的b字节数组,读取总长度为1024,直到读完为止,返回-1,然后跳出,第二次从1025开始是因为如果文件没读完,read会记录上次的记录,每次从上次读完的地方后面开始,直到整个文件读完或者出现异常
conquer0715
2017-11-26
打赏
举报
回复
内部维护一个游标,每当你调用一次后游标就自动指向下一个字节处,所以当再次读取的时候就得到下一个字节数据。
【IOException】at
java
.io.
FileInputStream
.open(
FileInputStream
.
java
:195)
package cn.
fileinputstream
.
read
; import
java
.io.File; import
java
.io.
FileInputStream
; import
java
.io.FileNotFoundException; import
java
.io.IOException; /** *@author:Chance Ni *@version: *@function: ...
java
.io.
FileInputStream
.
read
(byte[] b, int off, int len)方法实例
原文地址:https://www.yiibai.com/
java
/io/
fileinputstream
_
read
_byte_len.html
java
.io.
FileInputStream
.
read
(byte[] b, int off, int len)
读取
从此输入流中的数据len个字节到字节数组,开始在目标数组b的偏移。...
java
fileinputstream
.
read
(byte[])_初学
Java
,IO流中
FileInputStream
采用byte[]方式
读取
IO流中
FileInputStream
采用byte[]方式
读取
。相比单纯使用
read
()方法
读取
文件,采用byte[]方式
读取
占用资源较少,一次
读取
的量较大,也就是
read
(byte b[])。声明byte[]时采用静态初始化,这
里
让他每次读8byte输出时...
JAVA
-
FileInputStream
之
read
方法
关于
FileInputStream
它用于
读取
本地文件中的字节数据,继承自InputStream类,由于所有的文件都是以字节为向导,因此它适用于操作于任何形式的文件。 关于其最重要的两个方法
Read
()和
Read
(byte b) 怎么...
java
.io.
FileInputStream
.
read
()的返回值类型为什么是int而不是byte
通过阅读InputStream类和
FileInputStream
类
里
的
read
()方法(native方法)的源码,
read
()方法的返回值有两种含义,虽然他们都是int类型。下面我们来看一下源码:/** *
Read
s the next byte of data from the input ...
Java SE
62,614
社区成员
307,326
社区内容
发帖
与我相关
我的任务
Java SE
Java 2 Standard Edition
复制链接
扫一扫
分享
社区描述
Java 2 Standard Edition
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章