Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么我在使用FileStream.Write时会越界?_C# - Fatal编程技术网

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

C# 为什么我在使用FileStream.Write时会越界?,c#,C#,当我执行这个代码时 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)

当我执行这个代码时

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();
我第一次运行它时,它就会工作。如果我第二次尝试运行它,就会出现此错误

偏移量和长度超出了数组的界限或计数更大 大于从索引到源结尾的元素数 收藏


我不理解这个错误。非常感谢您的帮助。

这只是说您正在尝试访问超出数组“边界”的地址上的数据


简单地说,假设您有一个由10个元素组成的数组。如果你问“从第5个元素开始,给我接下来的10个元素”,你会想到什么?它会抛出一个错误,告诉你偏移量(本例中的第5个元素)和长度(本例中的10个元素)超出范围。

你的参数传递错误。在:

FS.Write(BA, (int)end, BA.Length);
第二个参数指定要从中复制的字节数组中的偏移量,而不是要写入的文件中的偏移量。实际上,您在第一个过程中复制了8192个字节,在第二个过程中,您告诉FileStream从第8193个字节开始从BA复制,这当然会崩溃,因为它超出了范围。看

只需将0传递给FS.Write,告诉它从数组的开头开始,就可以修复它