Filestream.SetLength() "The parameter is incorrect"

Filestream.SetLength() "The parameter is incorrect"

所以我尝试以增量方式填充媒体设备并测量速度,直到我将数据从 75% 写入到 95%(我们没有完全填充它)之前它一直有效

当我设置文件长度时(例如:当磁盘有 3.72 GB 可用空间时,我试图制作一个 3.1GB 的文件,但出现以下异常

"The parameter is incorrect."

堆栈跟踪

at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.FileStream.SeekCore(Int64 offset, SeekOrigin origin)
at System.IO.FileStream.SetLengthCore(Int64 value)
at System.IO.FileStream.SetLength(Int64 value)
at DiskSpeed.Write.WriteFileFromMemory(Byte[] buffer, String path, Int64 fileSize, Int32 currentIteration, Int32 totalIterations, CancellationToken ct)

这是代码

using (var fs = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None, 8, FileOptions.WriteThrough | FileFlagNoBuffering))
{
    fs.SetLength(fileSize);
    .......
}

我正在使用它以 25% 的增量将块写入可移动媒体,但在 75% 之后,我只写入了 20% 的块。从 0-75% 可以正常工作,这是抛出此错误的最后一块。是的,我仔细检查了文件大小,有 SPACE!!!

有人有什么想法吗?我束手无策,似乎无法在网上找到任何东西。

private const FileOptions FileFlagNoBuffering = (FileOptions)0x20000000;

这是导致问题的原因。谢谢杜桑!