FileChannelImpl的 private native long transferTo0(int var1, long var2, long var4, int var6);
有一个问题是,你说的“普通复制文件方法”是指什么方法?是不是如下所示:FileInputStream in = ... FileOutputStream out = ...byte[] buf = .... int pos = 0; for(;;){ int len = in.read(buf,pos,buf.length); if(len == -1) break; pos += len; out.write(buf,0,len); } out.flush(); out.close(); in.close();如果是的话,以下方法肯定是更快的:FileChannelImpl的 private native long transferTo0(int var1, long var2, long var4, int var6);
FileChannelImpl的
private native long transferTo0(int var1, long var2, long var4, int var6);
FileOutputStream out = ...byte[] buf = ....
int pos = 0;
for(;;){
int len = in.read(buf,pos,buf.length);
if(len == -1) break;
pos += len;
out.write(buf,0,len);
}
out.flush();
out.close();
in.close();如果是的话,以下方法肯定是更快的:FileChannelImpl的
private native long transferTo0(int var1, long var2, long var4, int var6);
所以FileChannel与BufferedInputStream比较相似,运算的时间差不多。