According to the source code here, aspnet / AspNetWebStack / blob / master / src / System.Web.Mvc / FileStreamResult.cs
Yes
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); } } }
Where FileStream would be the stream passed on call
return File(stream, "application/octet-stream", "forums.csv");
Update
Your question was originally tagged Asp.Net MVC, but the code looks like a newer basic structure.
Found him there, although it is written differently, technically he does the same.
ASPnet / AspNetCore / blob / host /SRC/Mvc/Mvc.Core/SRC/ Infrastructure /FileResultExecutorBase.cs
protected static async Task WriteFileAsync(HttpContext context, Stream fileStream, RangeItemHeaderValue range, long rangeLength) { var outputStream = context.Response.Body; using (fileStream) { try { if (range == null) { await StreamCopyOperation.CopyToAsync(fileStream, outputStream, count: null, bufferSize: BufferSize, cancel: context.RequestAborted); } else { fileStream.Seek(range.From.Value, SeekOrigin.Begin); await StreamCopyOperation.CopyToAsync(fileStream, outputStream, rangeLength, BufferSize, context.RequestAborted); } } catch (OperationCanceledException) {
source share