吃了个饭回来,改成if((buf[i]>>>1)<=0x8)这样就对了~终于搞定了,求老师回复~
2014-11-27
if(buf[i]<=0xf)这句有问题的!这里buf[i]是byte类型,虽然比较的时候会自动变成int,但是如果它的最高位是1的话,它始终都是负数!!难怪我的中文文本里面会出现很多0a 0d 0a 0ce 0ca 0d1 0a6 0d7 0dc 0d2这种情况,但是英文字符就是对的! 老师这里应该说明一下的!
2014-11-27
第二个方法实现出现问题都不告诉学生,老师自己的代码都被改掉了吧?而且运行结果还是跟第一个方法不一样!被老师一带而过了!
2014-11-27
已采纳回答 / 好帮手慕珊
不是一次性都读取到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)...
2014-11-26
最赞回答 / 源代码_思无邪
建立数组进行读文件,就是为了读取文件内容时快一些而己,不管你建多大的数组(当然还受内存大小影响),总会有你一次读不了的文件。你首先要明白你读文件是为了干什么?有没有必要一次将文件都读到流中,象老师讲的例子:复制文件,或者是将大文件分割再合成等就没有必要一次将文件读到流中呀。一次性读不完,老师的例子里说得很清楚了呀:就是那个while((b=in.read(buf, 0, buf.length))!=-1)语句,没有读完就一直循环,只到读到文件尾。
2014-11-26
while((int i = read(byte【】 b ,int satrt ,int sist))!= -1?? ) 为什么 不等于-1可以用判断 ,返回的不是 已经读取的个数吗
2014-11-19