gpt4 book ai didi

c# - 为什么我在使用 FileStream.Write 时会越界?

转载 作者:行者123 更新时间:2023-12-03 22:57:10 25 4
gpt4 key购买 nike

当我执行这段代码时。

Random R = new Random();
byte[] BA = new byte[8192];
R.NextBytes(BA);
FileStream FS = new FileStream(@"D:\Test.txt", FileMode.Append);
long end = FS.Seek(0, SeekOrigin.End);
if (FS.CanWrite == true)
{
FS.Write(BA, (int)end, BA.Length);
FS.Flush();
}
FS.Close();

它会在我第一次运行时工作。如果我再次尝试运行它,我会收到此错误。

Offset and length were out of bounds for the array or count is greater than the number of elements from index to the end of the source collection.

我不理解这个错误。任何帮助表示赞赏。

最佳答案

你传递你的论点是错误的。在:

FS.Write(BA, (int)end, BA.Length);

第二个参数指定要复制的字节数组中的偏移量,而不是您要写入的文件中的偏移量。实际上,您在第一遍中复制了 8192 个字节,在第二遍中,您告诉 FileStream 从第 8193 个字节开始从 BA 复制,这当然会崩溃,因为它超出了范围。见 MSDN docs .

您可以简单地通过将 0 传递给 FS.Write 来修复它,告诉它从数组的开头开始。

关于c# - 为什么我在使用 FileStream.Write 时会越界?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11964069/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com