2

Qtでマルチパートダウンローダーを書いています。QNetWorkRequestファイルのダウンロードには、httpヘッダーが「Range」の複数が使用されます。ここで、各part(QNetworkReply)で受信したデータをfile.part1、file.part2などに書き込みます。

同じファイルに同時にデータを書き込むことは可能ですか?ロックを実装する必要がありますか?アプリケーションにデータを保存するための最良の方法はどれですか?

助言がありますか?

4

1 に答える 1

0

終了したら、ファイルパーツをマージしてみませんか?パーツをQFile簡単に書き込むことができます。QFileおそらく、アプローチまたはデータに関する何かがこれを行うのを妨げていますが、可能であれば、それはおそらく、共有リソースとして扱う前に私が採用するアプローチです。

複数の同時応答に書き込みとアクセスを許可する場合はQFile、はい、QFile共有リソースになります。私の知る限り、あなたはそれをロックする必要があるでしょう。その時点で、いくつかのオプションがあります。応答を処理するスロットにを取得させようとすることができます。ミューテックスをロックしたい場合は、QSemaphoreを使用できます。そのルートに行きたい場合は、複数のプロデューサー(さまざまなQNetworkReplys)の単一のコンシューマー(ファイルに書き込んでいるものは何でも)の問題(ここにいくつかの便利なリンクを提供するStack Overflowの投稿)として扱うことができます。要するに、ここには多くのアプローチがありますが、そのルートに進むことができれば、最後にを単にマージするよりも、すべてが面倒だと思います。QMutexQMutexLockerfile.part

同時に単一にマージするという点ではQFile、Qtの方が簡単な方法があるかもしれませんが、私はそれを見つけたことがありません。そのような方法が存在する場合、おそらく他の誰かがチャイムを鳴らすことができます。

「アプリケーションにデータを保存するための最良の方法はどれですか?」とはどういう意味かわかりません。アプリケーション固有の設定を永続的に保存することを指しているのですか?もしそうなら、調べてQSettingsください。QFileダウンロードしているデータの保存について言及している場合は、あなたが行っているように見えるように、おそらくそれをに書き込みます。あなたが何をダウンロードしているのかをもっと知らなければ、確実に知るのは難しいですが。

于 2012-06-20T00:43:21.133 に答える