将流读入另一个流的最有效方法是什么?在这种情况下,我正在尝试将文件流中的数据读入通用流.我知道我可以执行以下操作:
1.逐行读取并将数据写入流
2.读取字节块并写入流
3.等
我只是想找到最有效的方法.
谢谢
斯蒂芬Toub在他的MSDN .NET事项专栏讨论流管道在这里.在文章中,他描述了一个从一个输入流复制到另一个流的CopyStream()方法.这听起来与你想要做的非常相似.
我汇总了一个快速扩展方法(所以VS 2008仅限3.5):
public static class StreamCopier { private const long DefaultStreamChunkSize = 0x1000; public static void CopyTo(this Stream from, Stream to) { if (!from.CanRead || !to.CanWrite) { return; } var buffer = from.CanSeek ? new byte[from.Length] : new byte[DefaultStreamChunkSize]; int read; while ((read = from.Read(buffer, 0, buffer.Length)) > 0) { to.Write(buffer, 0, read); } } }
因此可以使用它:
using (var input = File.OpenRead(@"C:\wrnpc12.txt")) using (var output = File.OpenWrite(@"C:\wrnpc12.bak")) { input.CopyTo(output); }
您也可以略微交换逻辑并编写CopyFrom()
方法.