QFile file("file.dat");
file.open(QIODevice::WriteOnly);
QDataStream out(&file); // we will serialize the data into the file
out.setVersion(QDataStream::Qt_4_0);
out << QString("the answer is"); // serialize a string
out << (qint32)42; // serialize an integer
//读二进制文件
QFile file("file.dat");
file.open(QIODevice::ReadOnly);
QDataStream in(&file); // read the data serialized from the file
in.setVersion(QDataStream::Qt_4_0);
QString str;
qint32 a;
in >> str >> a; // extract "the answer is" and 42
qDebug()<<str<<a;
如果读写分别运行就OK, 百思不得其解。。
Qt QDataStream
------解决方案--------------------
现在的电脑系统,都是有缓冲的文件系统,必须关闭文件,才能把全部数据写入磁盘(如果数据少,一点也没有写入,直接读是空文件),关闭写入的文件。再打开就能正常读出来。
Qt的QFile是自动关闭的,这两段代码写在一起,自然是在函数结束的时候关闭文件,所以读不出来。
------解决方案--------------------
首先你的代码有问题,就是 没有关闭文件。其次楼上说的也没有什么道理。最关键的还是文件指针,如果去要读的话,需要把文件指针前置。因为读写是一个指针。写完以后,指针其实在你要读内容的后面。
------解决方案--------------------
主要是你写的时候,没有将文件的缓冲flush(),如果你先将QFile关闭了,再重新打开,那么就可以正常的读取了。
------解决方案--------------------
楼主是先写,后读,两个QFile,seek的问题不存在。