为了账号安全,请及时绑定邮箱和手机立即绑定

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

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();
}

正在回答

3 回答

谢谢啦,太不仔细了

0 回复 有任何疑惑可以回复我~

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

0 回复 有任何疑惑可以回复我~

把开辟的内存放大一些

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信