私は時々クリーンアップする必要があるC++のストリームを書いています.私が書いているファイルは削除され、クラスは削除されてクリーンアップされるべきです.
どのように?(それを閉じて名前で削除する場合を除く)。
(少なくとも、ファイルを開いたときに使用した意図した場所とファイル名でファイルが存在するべきではありません - tempfile ディレクトリは問題ない可能性があります)
私は時々クリーンアップする必要があるC++のストリームを書いています.私が書いているファイルは削除され、クラスは削除されてクリーンアップされるべきです.
どのように?(それを閉じて名前で削除する場合を除く)。
(少なくとも、ファイルを開いたときに使用した意図した場所とファイル名でファイルが存在するべきではありません - tempfile ディレクトリは問題ない可能性があります)
私の知る限り、他に方法はありません。ファイルを閉じて、
remove
その名前で使用します。
これはおそらく、ある種の RAII クラスで処理するのが最適です。私は定期的に(出力用に)OutputFile
暗黙的に変換するクラスを使用します。std::ostream&
コンストラクターはファイルの名前を取ります。ファイルを閉じる関数がありcommit
ますが、デストラクタが前commit
に呼び出されると、ファイルを閉じるだけでなく削除します。同様に、
UpdateFile
開いたクラス
があり、名前がに変更
されfilename.new
(
その名前の既存のファイルはすべて削除されます)、 に移動し
ます。そして、デストラクタは を削除し
ます。(バリアントは、新しいコンテンツが の古いコンテンツと異なるかどうかをチェックするため、コンテンツに変更がない場合、ファイルのタイムスタンプは変更されません。)commit
filename
filename.bak
filename.new
filename
filename.new
commit