1

私は時々クリーンアップする必要があるC++のストリームを書いています.私が書いているファイルは削除され、クラスは削除されてクリーンアップされるべきです.

どのように?(それを閉じて名前で削除する場合を除く)。

(少なくとも、ファイルを開いたときに使用した意図した場所とファイル名でファイルが存在するべきではありません - tempfile ディレクトリは問題ない可能性があります)

4

1 に答える 1

1

私の知る限り、他に方法はありません。ファイルを閉じて、 removeその名前で使用します。

これはおそらく、ある種の RAII クラスで処理するのが最適です。私は定期的に(出力用に)OutputFile暗黙的に変換するクラスを使用します。std::ostream&コンストラクターはファイルの名前を取ります。ファイルを閉じる関数がありcommitますが、デストラクタが前commitに呼び出されると、ファイルを閉じるだけでなく削除します。同様に、 UpdateFile開いたクラス があり、名前がに変更 されfilename.new( その名前の既存のファイルはすべて削除されます)、 に移動し ます。そして、デストラクタは を削除し ます。(バリアントは、新しいコンテンツが の古いコンテンツと異なるかどうかをチェックするため、コンテンツに変更がない場合、ファイルのタイムスタンプは変更されません。)commitfilenamefilename.bakfilename.newfilenamefilename.newcommit

于 2013-02-26T10:14:36.887 に答える