我正在尝试从流中读取文件。
我正在使用stream.read方法来读取字节。所以代码如下所示
FileByteStream.Read(buffer, 0, outputMessage.FileByteStream.Length)
现在上面给出了错误,因为最后一个参数“outputMessage.FileByteStream.Length”返回一个long类型的值,但该方法需要一个整数类型。
请告知。
答案 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
循环。