バイナリファイルの後ろからデータを読み込む
環境: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
インクルードファイル
1 2 3 4 | #include <QByteArray> #include <QDataStream> #include <QFile> #include <QList> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | 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<qint64> 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; } |
コメント