使用.NET从FileStream的特定位置读取数据

时间:2010-03-11 09:49:28

标签: c# .net

我正在尝试从文件流中读取数据,如下所示:

fileStream.Read(byteArray, offset, length);

问题是我的偏移和长度是无符号Ints,而上面的函数只接受整数。如果我将类型转换为int,我得到的偏移值为负值,这是无意义的,并且不被函数接受。

偏移量和长度最初来自另一个字节数组,如下所示:

BitConverter.ToUInt32(length, 0); //length is a 4 byte long byte-array

从文件流的任意位置读取的正确方法是什么。

3 个答案:

答案 0 :(得分:5)

我不确定这是否是处理它的最佳方法,但您可以更改流的位置并使用偏移0. Position的类型为long

fileStream.Position = (long)length;
fileStream.Read(byteArray, 0, sizeToRead);

答案 1 :(得分:1)

对于这样的文件大小,您应该以小块读取文件,处理块并读取下一个。 int.MaxValue约为2GB,uint.MaxValue~4GB。这样的大小不适合大多数计算机ram;)

答案 2 :(得分:0)

如果你遇到转换问题,类似的东西可能会有所帮助:

    uint myUInt;
    int i = (int)myUInt; or
    int i = Convert.ToInt32(myUInt);