//创建一个大文件// 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();
QT存储映射文件
最新推荐文章于 2024-08-10 18:26:45 发布