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

文件传输基础——Java IO流

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

已采纳回答 / 乐乐Yami
字节byte是计算机中存储信息的单位,是8位二进制数,一个汉字两个字节,一个英文一个字节。字符人们使用的记号,抽象意义上的一个符号。'1','中','$','@'....在计算机中用一个字节表示。 

最新回答 / stt54321
in.read(buf, 0, buf.length)这个方法不是一次性读完了嘛?首先对于你的这个理解是错误的,因为这个方法正确的理解是把文件内容的字节读入到字节数组buf中,但是文件内容的字节有可能大于字节数组buf的长度,那么文件内容就一次读不完。in.read(buf, 0, buf.length)这个方法可能为-1吗再来说说这个方法的返回值,这个方法返回的是实际读取到字节数组中的字节的数量。官方api明确指出,如果已经达到文件的末尾,返回值为-1.

最新回答 / helloworld2008
你读出来的字节序列是不是对的?然后转换成字符串输出就是乱码?

最新回答 / leowei
其实写入'a' 不会干扰,写入'a'的后8位正好符合gbk编码,而是中间写入了int数,这个收到了干扰。
已经解决了。UTF8是不定长的,目前,中文2-4字节。
//采用utf-8编码写出
dos.writeUTF("中国");
结果是 00 06 e4 b8 ad e5 9b bd 为什么呢?
一个UTF-8编码中一个汉字是3个字节啊.
有可以帮助解答的么?谢谢。

已采纳回答 / 别路Biello
你好,你的 printHex()函数写的有问题,你一开始只读了一个字节,while循环中b一直是68,不会等于-1,所以一直输出68,在while循环最后加一句b=in.read();就可以了<...code...>

已采纳回答 / _神人A
同样条件下,是应该Buffer比普通的读取快,但不是最快的,最快是用FileInputStream的getChannel()方法去读取。你可以运行下面的那段代码去对比下就知道了。<...code...>下面是运行结果:运行copy file 的普通方法需要的时间是: 94毫秒运行copy file 的buffer普通方法需要的时间是: 62毫秒运行copy file 的getChannel()方法需要的时间是: 16毫秒
讲的很好!
跑完程序之后,代码和预期不相符,视频此时直接快进了之后可以看到代码已经被修改,但没有说明任何说明。照这个来,不会到时候只要出手写代码,一写就错吧?
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消