0

現在、ファイルの書き込み中にマシンの電源を突然切るテストを実行しようとしています。電源切断が発生すると、データの最後の部分は、電源切断前にディスクにフラッシュされることがないため、存在しません。

Perl (Linux) では、ファイルが次の方法で開かれると、バッファなしの直接書き込みが可能になります。

sysopen(F, $file, O_WRONLY|O_DIRECT) or die "Couldn't direct open file $file\n";

これにより、何らかの理由でマシンがクラッシュした場合に備えて、最後の文字までデータを書き込むことができます。同様に、Windows の場合、「FILE_FLAG_NO_BUFFERING」フラグを使用してファイルが書き込み用に開かれている場合、C++ は直接書き込みを許可します。

powershell を使用して、ディスクへの直接/非バッファ書き込みを許可するにはどうすればよいですか?

4

1 に答える 1

1

.NET にドロップダウンし、FileStream オブジェクトを使用してファイルを書き込むことができます。FileOptions を取るコンストラクターを使用して、FileOptions.WriteThrough列挙値を試してください。

$fileStream = New-Object System.IO.FileStream($file,
    [System.IO.FileMode]::Create, 
    [System.Security.AccessControl.FileSystemRights]::Modify,
    [System.IO.FileShare]::None,
    1,
    [System.IO.FileOptions]::WriteThrough)
于 2012-08-23T05:21:52.733 に答える