JAVA中read()是如何读取字符的、read()的返回值为什么要赋给整型变量?配合available读取字长时它们的工作原理是什么?

最近,本人初学Java中有关文件输入输出时,遇到了一些疑惑,给大家看一段利用read()读取文档字符并将字符输出到屏幕的代码片段:

其中“测试.txt”文档中存放的字符串是“aaaaaa”,运行结果为:

可能很多初学者像我一样都对while循环中的语句有以下疑惑:

1、fin.available()是用来计算可读文件的的字长的,应该是恒大于零的,那岂不是死循环?(猜想fin.available()是递减的)

2、fin.read()从文档中读取的应该是字符,那为什么赋给整型变量data呢?(猜想read()是将字符转换为Ascll码)

为了验证,于是我在代码中加入了以下两句:

结果显示:

从输出结果可以看出:

1、(读取的位置就像这根竖线一样向后移动“|aaaaaa->a|aaaaa->aa|aaaa->aaa|aaa->aaaa|aa->aaaaa|a->aaaaaa|”)

一开始起始位置在字符串最前端,循环中每经过一次read(),读取的位置就自动向后移一位字符,fin.available()是从读取的位置向后计算还有多长的字节可以读取,因此,fin.available()是一直递减,直至读取的位置移到字符串末尾,fin.available()变为0,读取循环结束;

2、输出的data值就是字符的Ascll码,然后write(data)再将Ascll码转换为字符显示出来;

以上纯属个人试验后的理解,欢迎交流指正。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值