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

文件传输基础——Java IO流

难度入门
时长 2小时 0分
学习人数
综合评分9.67
669人评价 查看评价
9.9 内容实用
9.6 简洁易懂
9.5 逻辑清晰
吃了个饭回来,改成if((buf[i]>>>1)<=0x8)这样就对了~终于搞定了,求老师回复~
if(buf[i]<=0xf)这句有问题的!这里buf[i]是byte类型,虽然比较的时候会自动变成int,但是如果它的最高位是1的话,它始终都是负数!!难怪我的中文文本里面会出现很多0a 0d 0a 0ce 0ca 0d1 0a6 0d7 0dc 0d2这种情况,但是英文字符就是对的! 老师这里应该说明一下的!
请问按位与上0xff是不是没有必要啊?好多问题..求教啊~
第二个方法实现出现问题都不告诉学生,老师自己的代码都被改掉了吧?而且运行结果还是跟第一个方法不一样!被老师一带而过了!

最赞回答 / 好学的小橙子
read()返回的是读取的字节数,write()是写入文件的字节数,需要的就是c是int型,你想怎么变

已采纳回答 / 发呆的阿呆
这里的数组应该相当于缓存   
@向往天空的鱼,read方法返回的是已经读取的字节数,如果已到达流的末尾,则返回 -1。
@不及回顾 异常是一种容错机制,当程序发生错误时可以自动捕捉到错误并进行处理,给程序员的开发工作带来便利。在程序中没有发生异常说明程序的各个相关环节都是没问题的,但有时候我们可能会考虑的不那么周到,就会引起异常的发生,尤其是代码量大逻辑关系复杂的时候。在JAVA io中有很多种异常,比如读文件时找不到文件的FileNotFoundException异常,当读的文件不存在时就会发生,可以尝试一下。

已采纳回答 / 好帮手慕珊
不是一次性都读取到buf数组中,看下面的代码第5行,通过read方法读到buf数组中,buf数组满了就进行处理(转换成16进制显示),然后再接着读,直到读到文件末尾为止。FileInputStream in = new FileInputStream("e:\javaio\1.mp3"); byte[] buf = new byte[8 * 1024];  int bytes = 0;  int j = 1;  while((bytes = in.read(buf,0,buf.length))!=-1)...

最赞回答 / 源代码_思无邪
建立数组进行读文件,就是为了读取文件内容时快一些而己,不管你建多大的数组(当然还受内存大小影响),总会有你一次读不了的文件。你首先要明白你读文件是为了干什么?有没有必要一次将文件都读到流中,象老师讲的例子:复制文件,或者是将大文件分割再合成等就没有必要一次将文件读到流中呀。一次性读不完,老师的例子里说得很清楚了呀:就是那个while((b=in.read(buf, 0, buf.length))!=-1)语句,没有读完就一直循环,只到读到文件尾。
加油,慕课
很有收获,,,谢谢cedar
while((int i = read(byte【】 b ,int satrt ,int sist))!= -1?? ) 为什么 不等于-1可以用判断 ,返回的不是 已经读取的个数吗
为什么每次都要在io中抛出异常啊?感觉每次都没什么异常啊。
从哪里体现的过滤?!
课程须知
亲,为了更好的学习本门课程,需要您对二进制的知识有所了解,还要熟悉Java的基本语法和面向对象的知识。
老师告诉你能学到什么?
1、了解文件编码。 2、能够对文件和目录进行管理操作。 3、能够应用字节流和字符流对文件进行读写操作。 4、能够对对象进行序列化和反序列化。

微信扫码,参与3人拼团

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

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

本次提问将花费2个积分

你的积分不足,无法发表

为什么扣积分?

本次提问将花费2个积分

继续发表请点击 "确定"

为什么扣积分?

举报

0/150
提交
取消