本帖最后由 我能学编程吗 于 2013-10-22 23:18 编辑
拿输出流提问
疑问:缓冲流是不是对于调用write(int b) 方法的才起到缓冲的作用,对于调用write(byte b[])或write(byte b[], int off, int len)方法的话,使不使用缓冲流效果是一样的???
查看FileOutputStream,有如下写的方法: - write(int b)
- write(byte b[])
- write(byte b[], int off, int len)
查看源码可知write(int b)调用的源码如下:public native void write(int b) throws IOException;
调用write(byte b[])或write(byte b[], int off, int len)的最终是调用了下面的方法:private native void writeBytes(byte b[], int off, int len) throws IOException;
write(int b)方法功能是写一个字节,如果有1万个字节要写,那就得写1万次。
writeBytes(byte b[], int off, int len)一次性写入的。
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(file)); 而所以谓的缓存流,是不是作用只在于调用write(int b) 方法时起到了缓冲作用,因为它不是立请立刻写进去,而是等到缓存数量够了再调用write(byte[] b,int off, int le)方法。 如果我不是调用write(int b)方法的话,是不是没有必要用缓冲流啊?直接使用FileOutputStream的write(byte b[], int off, int len)方法就行了。
|