Filestream.SetLength()“参数不正确”

时间:2015-03-24 13:47:14

标签: c# disk-io

所以我试图以增量填充媒体设备并测量速度,直到我将数据写入75%到95%(我们不完全填写) p>

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

"参数不正确。"

栈跟踪

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%开始工作正常,它是抛出此错误的最后一块。是的,我已经仔细检查了文件大小,有空间!!!

有没有人有任何想法?我的智慧结束了,我似乎无法在网上找到任何东西。

1 个答案:

答案 0 :(得分:1)

private const FileOptions FileFlagNoBuffering = (FileOptions)0x20000000;

这导致了这个问题。谢谢Dusan!