2012-08-13 70 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));