1

ファイルを空にしたいのですが、2つの方法があります:

1) dwCreationDisposition = TRUNCATE_EXISTING で CreateFile 関数を使用する!

2) ファイルを開き、SetFilePointerEx でファイル ポインタをファイルの先頭に設定し、SetEndOfFile を呼び出します。

違いはありますか?どちらを使用すればよいですか?

4

2 に答える 2

4

本質的に、これらは両方とも同じことを達成し、パフォーマンスの大きな違いを判断できるようにするには、ファイルを何度も「空にする」必要があります。ファイルが大きい場合は、使用されなくなったブロックをファイルから解放します。とにかく割り当てが主な時間になります。

もちろん、より移植性の高いコードが必要な場合は、 を使用してofstream of("myfile.ext");これを実現することもできますFILE *f = fopen("myfile.ext", "w");(同じテーマのいくつかのバリエーションと共に)。

一般に、これらのバリアント間にほとんど違いはありません。ほとんどの場合、現在作業しているコードにとって最も意味のあるものです。言い換えれば、「空になったファイルで次に何をするつもりか」と、そのために必要な「ハンドル」の種類です。

于 2013-09-11T12:31:24.780 に答える