如何读取任何类型的文件作为二进制值?

时间:2012-08-13 08:27:32

标签: qt

如果我想从文件中获取二进制值,无论它们具有哪种格式,我该怎么做? 我已经尝试过这段代码,但它只能逐行读取文本文件,仅此而已。

QFile file(QFileDialog::getOpenFileName (this, tr("Open File"),
                                         "",tr("")));
if (!file.open(QIODevice::ReadOnly ))
        return ;
int size = file.size();
qDebug()<<size;
while (!file.atEnd()) {
      QByteArray line = file.readLine();
      qDebug()<<line;

2 个答案:

答案 0 :(得分:2)

分配缓冲区以读取数据并使用QFile :: read函数。例如:

qint64 bufSize = 1024;
char *buf = new char[bufSize];
qint64 dataSize;
while (!file.atEnd()) {
    dataSize = file.read(buf, bufSize);
    /* process data */
}

答案 1 :(得分:0)

您不仅可以读取char数组,还可以读取其他类型。例如,从文件中读取结构:

struct Foo
{
  int bar;
  long foobar;
}
//...
Foo foo1;
file.read(foo1, sizeof(Foo));