提问人:totoro 提问时间:10/9/2014 最后编辑:Communitytotoro 更新时间:1/27/2021 访问量:18540
FileStreamResult 会关闭 Stream 吗?
Does FileStreamResult close Stream?
问:
我的问题类似于这个问题:File() In asp.net mvc 会关闭流吗?
我在 C# MVC 4 中有以下内容。
FileStream fs = new FileStream(pathToFileOnDisk, FileMode.Open);
FileStreamResult fsResult = new FileStreamResult(fs, "Text");
return fsResult;
会被自动关闭吗?谢谢!fs
FileStreamResult
答:
74赞
Faris Zacina
10/9/2014
#1
是的。它在流周围使用一个块,这确保了资源将被释放。using
下面是 WriteFile 方法的内部实现:FileStreamResult
protected override void WriteFile(HttpResponseBase response)
{
// grab chunks of data and write to the output stream
Stream outputStream = response.OutputStream;
using (FileStream)
{
byte[] buffer = new byte[BufferSize];
while (true)
{
int bytesRead = FileStream.Read(buffer, 0, BufferSize);
if (bytesRead == 0)
{
// no more data
break;
}
outputStream.Write(buffer, 0, bytesRead);
}
}
}
评论