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

文件传输基础——Java IO流

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

已采纳回答 / 慕田峪9462102
个人理解在for循环的时候把byte元素传到Integer.toHexString(b&0xff)的时候byte会自动转型成int类型,由于int类型是32位然后& 0xff 就是把前面24个0去掉只要低8位,最后打印出来的就是只保留低8位的形式

已采纳回答 / PeacefulWinter
c 的意义在于临时存放当前 while 循环读到的字节内容,以便在循环体内多次引用。如果直接换成 bis.read(),则每调用一次,读到的内容都是下一个字节,逻辑就全乱了。

已采纳回答 / 风月颖
java之所以叫java,那是因为java的设计者在想这个编程语言的名字时,刚好在喝一种叫java的咖啡。他觉得这种咖啡挺好喝的,于是就想:这种编程语言叫java吧。

已采纳回答 / 孤城浪子55555
write()只能写入右边低位的8位,要想把最左边的8位写进去就得把左边的移动到右边来,移动24位过后最左边的8位就到了最右边,就能写了

已采纳回答 / 相遇即是缘分
字节数组不足以存放文件中的字节数据时,又想读完文件中的数据,这个时候,就要用到while循环了。如果字节数组足够大,可以放下整个文件的数据时,就不需要用到while循环了,只读一次就行了。但是,一般情况下,还是要用while循环,因为字节数组初始大小,无法保证适合所有的情况。

已采纳回答 / Java攀登者
我去试了一下,发现并不会buf数组并不会初始化,第二次读取的数据会直接覆盖数组原来的内容。假设第二次循环b=1002,那么buf[0]~buf[1001]的值会与第一次循环时的值不一致,而buf[1002]之后的数据与第一次循环一致。没覆盖的值不为0就证明了没有初始化,这就说明第二次读取时的内容直接覆盖原来的内容。

已采纳回答 / 程序猿天璇
>>>(按位右移不足补0),表示无符号右移!右移表达式的位,不保留符号。result = expression1 >>> expression2参数解释:result:任何变量。expression1:任何表达式。expression2:任何表达式。说明:>>> 运算符把 expression1 的各个位向右移 expression2 指定的位数。右移后左边空出的位用零来填充。移出右边的位被丢弃。例如: var temptemp = -14 >&...

已采纳回答 / FarCryrr
1个字节是8位只有8种基本类型可以算.其他引用类型都是由java虚拟机决定的自己不能操作byte 1字节short 2字节int 4字节long 8字节float 4字节double 8字节char 2字节boolean 1字节

已采纳回答 / 小鱼小鱼吃虾米
从你的输出看,你的代码应该是敲错了,i对应的4个字节是127,-1,-1,-1;一共写了两次i。“中”对应的是-42,-48;

已采纳回答 / 人生白月
试一下改回gbk格式行不行!

已采纳回答 / 不多bb
toString()是重写显示Student类属性的方法,如果不重写,直接System.out.println(stu)显示的将是地址值

已采纳回答 / xiongmaojames
1、byteBybyte 模式,是程序从硬盘上读取一个字节字后,再写入一个字节,然后再读取再写入,因为磁盘io的速度是非常慢的,所以耗时较长2、缓冲实在byteBybyte基础上,方法内部根据一定的算法(也可以能是固定长度,没有看具体实现)在内存中开辟一个空间-缓冲区,读取一个(或者若干个)字节之后,先放入内存缓冲区,然后写入的时候,从缓冲区中写入硬盘。3、因为内存的io速度非常快,因此可以更为高效的利用硬盘,所以整体上就快了。
首页上一页1234567下一页尾页
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消