问答详情
源自:4-4 字节流之数据输入输出流

程序运行太卡,并且复制的文件太大

public static void CopyFileByFile(File preFile,    File nexFile)throws IOException{
    if(!preFile.exists()){
        throw new IllegalArgumentException("文件"+preFile+"不存在");
    }
    if(!preFile.isFile()){
        throw new IllegalArgumentException(preFile+"不是文件");
    }
    FileInputStream in=new FileInputStream(preFile);
    FileOutputStream out=new FileOutputStream(nexFile);
    byte[]bye=new byte[1024];
    int b=in.read(bye, 0, bye.length);
    while(b!=-1){
    out.write(bye,0,b);
    /*
     * 这个方法的作用是把缓冲区的数据输出。
     * 一般在读写流的时候,数据是先被读到了内存中,
     * 再把数据写到文件中,当数据读完的时候不代表数据已经写完了,
     * 因为还有一部分有可能会留在内存这个缓冲区中。
     * 这时候如果调用了close()方法关闭了读写流,
     * 那么这部分数据就会丢失,所以应该在关闭读写流之前先flush()。
     */
    }
    in.close();
    out.close();
}

提问者:慕粉3793179 2016-10-31 00:34

个回答

  • 慕粉3793179
    2016-10-31 19:32:54

    谢谢啦,太不仔细了

  • 慕粉1468128989
    2016-10-31 19:20:09

    这个不是运行太卡,你这个是int b = in.read(bye,0,bye.length)读取文件的时候,不是写在while循环中,并不能进行判断文件是否读完。你都已经是死循环了,应该写到while循环中进行判断。你的代码写的是一直在nexFile文件中进行写操作。

  • 黑色奇迹
    2016-10-31 19:15:56

    把开辟的内存放大一些