您的位置:首页 > 编程语言 > Qt开发

Qt 文件逐字节的读取与写入的补充

2016-05-21 12:58 405 查看
一般来说 如果我们采用readAll一次性读取所有字节,如果是小文件都还没问题,如果是大文件几十MB几百MB很有可能还卡死,或者几个GB,直接内存都不够了~。

我们需要 读取一个字节发送一个字节~~不用占用太多内存~

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include<QFile>
#include<QIODevice>
#include<QDebug>
#include<QByteArray>
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QFile file1("E:/1.txt");
file1.open(QIODevice::ReadOnly);
//===
QFile file2("E:/t/1.txt");
//|追加模式
file2.open(QIODevice::Append);
//==
qint64 length=0;
char * buffer=new char[1];
int i=0;
//|可以不用ByteArray 直接写入char *;
//|需要注意的是char * 最好只是1,因为 如果最后一次读取只读取了一部分 那么后面的 还会是原来的数据~
QByteArray b;
while((length=file1.read(buffer,1))!=0)
{
++i;
b=buffer;
file2.write(b);
qDebug()<<length<<"i:"<<i;
}
}

MainWindow::~MainWindow()
{
delete ui;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: