请建议我一个可以用来将流写入文件的好方法。
我只需要一个简单的 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/