目前我正在尝试运行一个测试,在写入文件时会突然关闭机器。当发生掉电时,最后一部分数据不存在,因为它在掉电之前从未刷新到磁盘。
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允许直接/非缓冲写入磁盘?
答案 0 :(得分:1)
您可以下载到.NET并使用FileStream对象来编写文件。使用带有FileOptions和try the 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)