QT存储映射文件

//创建一个大文件// QFile src(QString("/root/a"));// if(!src.open(QIODevice::ReadWrite)) {// return -1;// }// QTime t;// t.start();// int i=0;// while(t.elapsed() <1000*12)// {// i++;// QString a = QString("%1aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\n").arg(i);// src.write(a.toLatin1().data());// }// src.close();//复制大文件 QFile src(QString("/root/notes")); if(!src.open(QIODevice::ReadOnly)) { qDebug()<<"src.open() faile"; return -1; } QTextStream srctext(&src); QFile dest(QString("/root/bak")); if(!dest.open(QIODevice::WriteOnly)) { src.close(); qDebug()<<"dest.open() faile"; return -1; } QTextStream desttext(&dest); uchar* srcMap = src.map(0,src.size()); if(src.size() > 0 && srcMap == NULL) { qDebug()<<"src.map()faile"; return -1; } uchar* destMap = dest.map(0,dest.size()); if(dest.size() > 0 && destMap == NULL) { qDebug()<<"src.map()faile"; return -1; } QTime t; t.start(); //复制开始//第一种方法复制2.7G文件用时100418毫秒// while(!srctext.atEnd()){// desttext<<srctext.readLine()<<"\n";// }//第二种方法复制2.7G文件用时62328毫秒 char buf[1024*8]; qint64 readSize = 0; qint64 size; while((size = src.read(buf,1024*8) ) != 0 && size != -1) { readSize += size; dest.write(buf,size); src.seek(readSize); } //复制结束 qDebug()<<t.elapsed(); src.unmap(srcMap); dest.unmap(destMap); src.close(); dest.close();
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值