最新回答 / stt54321
in.read(buf, 0, buf.length)这个方法不是一次性读完了嘛?首先对于你的这个理解是错误的,因为这个方法正确的理解是把文件内容的字节读入到字节数组buf中,但是文件内容的字节有可能大于字节数组buf的长度,那么文件内容就一次读不完。in.read(buf, 0, buf.length)这个方法可能为-1吗再来说说这个方法的返回值,这个方法返回的是实际读取到字节数组中的字节的数量。官方api明确指出,如果已经达到文件的末尾,返回值为-1.
2016-04-05
已采纳回答 / 别路Biello
你好,你的 printHex()函数写的有问题,你一开始只读了一个字节,while循环中b一直是68,不会等于-1,所以一直输出68,在while循环最后加一句b=in.read();就可以了<...code...>
2016-04-04
已采纳回答 / _神人A
同样条件下,是应该Buffer比普通的读取快,但不是最快的,最快是用FileInputStream的getChannel()方法去读取。你可以运行下面的那段代码去对比下就知道了。<...code...>下面是运行结果:运行copy file 的普通方法需要的时间是: 94毫秒运行copy file 的buffer普通方法需要的时间是: 62毫秒运行copy file 的getChannel()方法需要的时间是: 16毫秒
2016-04-03
已采纳回答 / 木D羊
RandomAccessFile raf=new RandomAccessFile(file, "rw")应该改为: RandomAccessFile raf=new RandomAccessFile(file2, "rw");file是个目录,不是文件,不可以进行读写操作
2016-03-29
已采纳回答 / isunym
你要先下载好rt.jar.src,然后双击write()这个方法,进去,点击Attach Source,选择External location,选择External File,选择rt.jar.src路径,添加进去之后,再回到代码那里,双击write()方法进去就可以看到源码了。源码下载地址:http://download.csdn.net/download/czqiang007/5883777以后需要源码的地方都可以这样添加,希望可以帮助到你!
2016-03-28
最赞回答 / 宋杰
第一:你首先要搞明白编码问题。编码说白了解决的就是字符如何转换成字节(编码)以及字节如何转换成字符(解码)。第二:java IO分为字节流和字符流。字节流和字符流都有很多的实现类,用于不同的场景。第三:为了性能和方便性等考虑,java IO使用的装饰者模式对一些类进行了装饰。如果不知道装饰者模式,请先了解一下。
2016-03-26