c# - 将大流写入 C#.Net 64K by 64K 中的文件

标签 c# filestream

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

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

使用 linq、扩展方法等可以更好地完成此操作吗?

请为我提供一个好的实用函数,该函数还可以通过 yield 以百分比形式返回进度。

编辑:我知道循环遍历 byte[] 并将其写入文件。我尝试过 File.WriteAllBytes 方法。但是,我只是在寻找一种使用 linq、yield 和扩展方法来实现此目的的非常好的方法。

最佳答案

编辑:这是一个可以解决问题的实用函数:

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

    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();
        }
    }

关于c# - 将大流写入 C#.Net 64K by 64K 中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6001813/

相关文章:

c++ - 如何复制文件指针

C#阅读流

c# - 在没有 System.Web.dll 的情况下,C# 库代码如何知道它的托管应用程序类型?

c# - Request.Url 返回没有域的本地主机

c# - 从 'foreach' 中有效地删除项目

c# - Timer_Tick() + this.ActiveControl 导致 TextReader() 崩溃?

c# - 如何在 .net 中为网络适配器设置 dns 搜索后缀?

java - 将汉字从一个文件写入另一个文件

c# - FileStream.close() 不会为其他进程释放文件

PHP 流媒体 MP3