使用64K将大型流写入C#.Net 64K中的文件

时间:2011-05-14 12:27:50

标签: c# filestream

请建议我一个可用于将流写入文件的好方法。

我只需要一个简单的c#函数,它可以将流作为输入并完成工作。 我需要为非常大的文件执行此操作,即文件> 4GB。

使用linq,扩展方法等可以做得更好吗?

请为我提供良好的效用函数,也可以通过收益率返回百分比的进度。

编辑:我知道循环一个字节[]并将其写入文件。我试过File.WriteAllBytes方法。但是,我只是在寻找一种使用linq,yield和扩展方法的非常好的方法。

1 个答案:

答案 0 :(得分:3)

编辑:这是一个实用工具,可以解决这个问题:

更新:将第二个参数更改为文件名

    public delegate void ProgressCallback(long position, long total);
    public void Copy(Stream inputStream, string outputFile, ProgressCallback progressCallback)
    {
        using (var outputStream = File.OpenWrite(outputFile))
        {
            const int bufferSize = 4096;
            while (inputStream.Position < inputStream.Length)
            {
                byte[] data = new byte[bufferSize];
                int amountRead = inputStream.Read(data, 0, bufferSize);
                outputStream.Write(data, 0, amountRead);

                if (progressCallback != null)
                    progressCallback(inputStream.Position, inputStream.Length);
            }
            outputStream.Flush();
        }
    }