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

You could drop down to .NET and use a FileStream object to write the file. Use the constructor that takes FileOptions and try the FileOptions.WriteThrough enum value, e.g.:

$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 回答