求大神详解一下,API感觉看的云里雾里

解决方案 »

  1.   

    我猜是可能是用了direct memory的缘故。我去看看代码。
      

  2.   


    FileChannelImpl的
    private native long transferTo0(int var1, long var2, long var4, int var6);
      

  3.   

    有一个问题是,你说的“普通复制文件方法”是指什么方法?是不是如下所示: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);
      

  4.   

    FileChannel会产生缓冲区,比如读一个文件,就先将文件内容读到到缓冲区(内存),再进行操作,就不需要像InputStream每次读操作都要调用系统资源从文件处读取。
    所以FileChannel与BufferedInputStream比较相似,运算的时间差不多。