4

QFileInfoドキュメントからこのサンプルコードを実行する場合:

 QFileInfo fi("/tmp/archive.tar.gz");
 QString base = fi.baseName();  // base = "archive"

ファイルシステムへのアクセスになりますか?

fi.lastModified()呼び出すか、ファイルシステムにアクセスする必要があると想定していfi.exists()ますが、ファイル名の一部(拡張子、ベースファイル名、ディレクトリのみなど)を抽出するためにのみ使用するのはどうですか?

4

2 に答える 2

6

メソッドの実装を見ないと、ファイルシステムにアクセスするメソッドとアクセスしないメソッドを正確に判断するのは困難です。しかし、私は図書館であなたの質問に答えるこの種の説明を見つけました:

パフォーマンスの問題

の関数の中にはQFileInfo、ファイル システムにクエリを実行するものもありますが、パフォーマンス上の理由から、一部の関数はファイル名自体でのみ動作します。例: 相対ファイル名の絶対パスを返すにはabsolutePath()、ファイル システムを照会する必要があります。ただし、この path()関数はファイル名を直接処理できるため、高速です。

注:パフォーマンスを高速化するためにQFileInfo、ファイルに関する情報をキャッシュします。ファイルは他のユーザーやプログラム、または同じプログラムの他の部分によっても変更される可能性があるため、ファイル情報を更新する機能があります: refresh(). のキャッシングをオフにして、QFileInfo情報を要求するたびに強制的にファイル システムにアクセスさせたい場合は、 を呼び出します setCaching(false)

于 2012-12-05T14:17:04.130 に答える