为了账号安全,请及时绑定邮箱和手机立即绑定

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰

已采纳回答 / betME
一个字符根据编码方式的不同所需的字节数也不同,gbk编码的一个字符需要2个字节,而write方法是写入一个字节,因为系统会将后八位写入。

已采纳回答 / WhiteJj
这本身就是一个用于判断是否读取到文件的末尾,如果读取到文件末尾,bytes的值就为-1了呀,while循环就会结束了呀

已采纳回答 / 慕粉4407418
那个是上一节课老师写的类中的一个方法,所以跟这一节课没什么关系。它是独立执行的。

已采纳回答 / 涅米
while后面的(b=in.read())!=-1返回的是一个布尔值,而这个值只有在文件读到结尾的时候才返回false,即in.read==-1,所以在读完之前返回的都是true,都可以执行循环b的值本身不会变化,但是文件的指针pointer在每次循环后都会加1,所以每次b读出来的值都是不一样的if的判断条件是i++%10==0,先判断i%10的值是否为0,然后自增1,此时i=i+1,然后进入下一个循环,判断i+1的值除以10余数是否为0,所以就算if的条件不满足,i也执行了自增

最新回答 / 慕运维824941
in.read()是从流中读取的数据的长度,b=in.read是将in.read的长度赋给b

最新回答 / im李先森la
可以,本来老师的意思是 从0位开始写入到 b位,如果你写了buf.length,就相当于每次都读全部byte[]的位数,这个时候b就没意义了,可以在while后面直接写while(in.read() != -1)

已采纳回答 / 阿莫林西
反斜杠/是可以运行的。但是你怎么把冒号写成分号了!

最新回答 / Angle_Zhang
这是相应的编码表中的字符的对应值,比如ASCII中A字符就对应65,这些并不重要,并不要去记~

已采纳回答 / SHsama
两个汉字,四个字节。按你所说,你觉得应该使用四次写操作,但是那是相对于直接写入字符来说的,此处使用了字节数组,数组相当于一个有序的容器,在数组中”中国“被分成四个字节依次写入其中,out.write(bytes);就将这个数组写入其中,数组其中的写字节操作在内部进行,不是靠四个write操作写入的。你可以将鼠标放到你写的write上可看到该方法提示Writes b.length bytes from the specified byte array to this file output stream....

已采纳回答 / 宝慕林0707671
这个A是char类型的,一个char等于两个字节。write一次写出一个字节。所以会将这个字母的低八位写出

最新回答 / 武HH
数组开拓了内存空间,但是实际存放数据的可能只有部分,所以只需要序列化存放数据的那一部分

已采纳回答 / 向上看
因为你每run一次,指针都是从0开始的,每run一次都改写了上一次内容,你可以尝试运行一下老师的程序,然后再在程序前添加 raf.seek(12),使下一次从12byte处开始写,运行后你会发现输出长度为24

已采纳回答 / 汉江怪人
不是的,默认的是将有效的和无效的全部都序列化了。
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消