outputstream-inputstream.read(byte[] b,int off,int len)和write读写硬盘次数?

问题描述

inputstream.read(byte[] b,int off,int len)和write读写硬盘次数?

java中inputstream.read(byte[] b,int off,int len)和write读写硬盘次数,
每次调用inputstream.read(byte[] b,int off,int len)是访问硬盘一次吗,还是访问硬盘len次?
如果只是访问一次,byte[]的长度、len等于BufferedInputStream的缓冲区的大小,那么inputstream与BufferedInputStream的效率,访问硬盘次数是不是没有区别?

解决方案

操作系统、硬盘都是有缓冲的,所以你不能知道真正的物理读写次数。

解决方案二:

java IO中才会使用内存缓冲,意思是等你需要时,一部分一部的将文件读取到内存缓冲区,然后程序空间再去取。保存时也是同理 。缓冲区设置
越大,肯定读盘次数会小。对于大数据读取,可以看看JAVA NIO.

解决方案三:

同意二楼,这个读写硬盘的次数却实不敢说

时间: 2024-10-25 13:35:50

outputstream-inputstream.read(byte[] b,int off,int len)和write读写硬盘次数?的相关文章

java io-java流中read(byte[] b)和read(byte[] b,int off,int len)有什么区别

问题描述 java流中read(byte[] b)和read(byte[] b,int off,int len)有什么区别 InputStream in = new FileInputStream(sourcePath); byte[] b = new byte[1024]; while (in.read(b,0,1023)!=-1) { System.out.println(new String(b)); }; 和 while (in.read(b)!=-1) { System.out.pri

为什么link中byte可以转换为int,int不能转换为byte?

问题描述 为什么link中byte可以转换为int,int不能转换为byte? 为什么link中byte可以转换为int,int不能转换为byte? 解决方案 为什么杯子中的水可以倒在脸盆里,为什么脸盆里的水不能倒在杯子里? 解决方案二: 可以强制转换,但转换后的结果可想而知: 如果 int 的数值在 byte 类型取值范围之内,结果还是一样的. 否则,数值被截取.按 C 语言的规则,取 int 的低字节数值赋值到 byte.

public int getKeyCode(int gameAction) 与 public int getGameAction(int keyCode)的区别

区别 一个MIDlet应用程序通过调用Canvas方法来探测哪些键盘代码映射到运行的应用程序中的抽象游戏动作:public static int getGameAction(int keyCode); Canvas类定义抽象游戏动作集:UP.DOWN.LEFT.RIGHT.FIRE等等. 游戏开发者应该知道MIDP 1.0规范中的一个问题.这个类定义了转化键盘代码到游戏动作的方法,同样也定义了转化游戏动作到键盘代码的方法.public int getGameAction(int keyCode)

Unix编程之int fstat(int fildes,struct stat *buf);

/* * fstat(由文件描述词取得文件状态) * 相关函数 stat,lstat,chmod,chown,readlink,utime * 表头文件 * #include<sys/stat.h> * #include<unistd.h> * 定义函数 * int fstat(int fildes,struct stat *buf); * 函数说明 fstat()用来将参数fildes所指的文件状态,复制到参数buf所指的 结构中(struct stat). * Fstat()与

socket通信inputStream.read(byte)读取速度小于接收速度,导致多帧数据叠加在一起。

问题描述 在socket通信中,由于inputStream.read(byte)是尽可能的读byte[]大小的数据,当服务端发送数据速度大于客户端读取数据的速度时,就会出现客户端读到多帧连在一起的报文.而这些发送数据,读取数据的速度是未知的.怎么解决这个问题,服务器端不能改变, 解决方案 解决方案二:想办法将读取的后续动作的耗时降低.比如读取动作只负责读取,读取的内容传给多线程进行处理.解决方案三:没用.....解决方案四:想到了一个办法,把所有读的数据放到一起,不管每次读的是多少,放在所接收数

link中convert.toint32 int.parse int.tryparse的区别和利弊

问题描述 link中convert.toint32 int.parse int.tryparse的区别和利弊 link中convert.toint32 int.parse int.tryparse的区别和利弊各式什么? 解决方案 convert.toint32在LINQ中是桩函数,桩函数会被linq provider识别并且转换成sql,而parse/tryparse不是.所以不要使用后者. 解决方案二: 是 .Net/LINK 吧. tryparse 返回成功/失败不抛出错误,用在明确要检查能

ios oc-oc ??怎么理解这个表达式 int (^func()) (int)

问题描述 oc ??怎么理解这个表达式 int (^func()) (int) int (^func()) (int){ retutn ^(int count) {return count + 1;};} 解决方案 这个函数的返回值是一个函数(这个函数没有参数,返回值int).函数体定义了一个函数,并且把它作为结果返回.

iostream-为什么我没有对int操作 int值自己变化啊

问题描述 为什么我没有对int操作 int值自己变化啊 #include#include#include using namespace std; int main(){ ifstream infile(""1.txt""); char ch[2]; int counter=0; cout< cout while(infile>>ch){ cout<<ch; } cout<<endl; cout<<counter

配置-int t=(int)map.get(&amp;amp;quot;paraNum&amp;amp;quot;);

问题描述 int t=(int)map.get("paraNum"); 这句话在我的Myeclipse8.5会报错,我和同事都是从svn下下来的,他的是myeclipse2014,因为我们其他配置基本一样, 也都用的jdk1.7,为什么就我的报错呢?是不是Myeclipse版本的问题,哪位大神帮我 讲解下,感觉不太像是版本的差异照成的,我也不想再装一个myeclipse