スポンサーリンク
ホーム»Qt逆引きマニュアル» Qt:バイナリファイルの後ろからデータを読み込む

Qt:バイナリファイルの後ろからデータを読み込む

当サイトは、アフィリエイト広告を利用しています

バイナリファイルの後ろからデータを読み込む

環境: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;
 
    }

コメント

タイトルとURLをコピーしました