バイナリファイルの後ろからデータを読み込む
環境:QT5.5
リンク
http://doc.qt.io/qt-5/qbytearray.html
http://doc.qt.io/qt-5/qdatastream.html
http://doc.qt.io/qt-5/qfile.html
http://doc.qt.io/qt-5/qlist.html
インクルードファイル
#include
#include
#include
#include
quint32 fileSize;
QByteArray filePath, fileOwner;
// ファイルオープン
// バイナリファイル書き込み時には次のように書き込まれている
// out << filePath << fileSize << fileACL
QFile fp("C:\ProgramData\test\test");
if ( !fp.open(QIODevice::ReadOnly) ) {
// Error
return false;
}
QDataStream in(&fp);
// ファイルからデータを読み込み(各レコードの先頭位置を取得)
QList posList;
while( !in.atEnd() ) {
posList.append(in.device()->pos());
in >> filePath >> fileSize >> fileOwner;
}
// ファイルの後ろから先頭まで、データを読み込む
qint64 readPos;
for ( qint64 i=posList.count()-1; i>=0; i--) {
readPos = posList.at(i);
in.device()->seek(readPos);
in >> filePath >> fileSize >> fileOwner;
qInfo().noquote() << "FilePath: " << filePath;
qInfo().noquote() << "fileSize: " << fileSize;
qInfo().noquote() << "fileOwner: " << fileOwner;
}
コメント