2012-08-13 71 views
2

如果我想从文件中获取二进制值,无论他们具有哪种格式,我该怎么做? 我已经试过这段代码,但它只能逐行读取文本文件,无非就是如此。如何读取任何类型的文件为二进制值?

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; 
+0

您只是不能读取行,而是读取整个数据块。 – Blood 2012-08-13 08:38:41

+0

你能告诉我怎样才能读取整块数据? – muktoshuvro 2012-08-13 08:41:14

+0

read(qint64 maxSize)oraz readAll() – Blood 2012-08-13 08:55:32

回答

2

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

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

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

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