stream.read方法接受长度为整数类型???在哪里

时间:2010-08-30 13:19:18

标签: asp.net wcf

我正在尝试从流中读取文件。

我正在使用stream.read方法来读取字节。所以代码如下所示

FileByteStream.Read(buffer, 0, outputMessage.FileByteStream.Length)

现在上面给出了错误,因为最后一个参数“outputMessage.FileByteStream.Length”返回一个long类型的值,但该方法需要一个整数类型。

请告知。

1 个答案:

答案 0 :(得分:4)

将其转换为int ...

FileByteStream.Read(buffer, 0, Convert.ToInt32(outputMessage.FileByteStream.Length))

它可能是一个int,因为这个操作会阻塞,直到它完成读取...所以如果你是一个高容量的应用程序,你可能不想在读取一个大型文件时阻塞。

如果您正在阅读的内容大小不合理,您可能需要考虑循环以将数据读入缓冲区(例如来自MSDN docs):

//s is the stream that I'm working with...
byte[] bytes = new byte[s.Length];
int numBytesToRead = (int) s.Length;
int numBytesRead = 0;
while (numBytesToRead > 0)
{
    // Read may return anything from 0 to 10.
    int n = s.Read(bytes, numBytesRead, 10);
    // The end of the file is reached.
    if (n == 0)
    {
        break;
    }
    numBytesRead += n;
    numBytesToRead -= n;
}

这样你就不会施放,如果你选择一个相当大的数字来读入缓冲区,你只需要经过一次while循环。