【发布时间】:2010-10-31 15:39:14
【问题描述】:
我必须将一个大文件拆分成许多小文件。每个目标文件都由偏移量和长度定义为字节数。我正在使用以下代码:
private void copy(string srcFile, string dstFile, int offset, int length)
{
BinaryReader reader = new BinaryReader(File.OpenRead(srcFile));
reader.BaseStream.Seek(offset, SeekOrigin.Begin);
byte[] buffer = reader.ReadBytes(length);
BinaryWriter writer = new BinaryWriter(File.OpenWrite(dstFile));
writer.Write(buffer);
}
考虑到我必须调用这个函数大约 100,000 次,它非常慢。
- 有没有办法让 Writer 直接连接到 Reader? (也就是说,没有实际将内容加载到内存中的 Buffer 中。)
【问题讨论】:
-
File.OpenRead 和 File.OpenWrite 100,000 会很慢好吗...
-
您是否完美地拆分文件,即您可以通过将所有小文件连接在一起来重建大文件吗?如果是这样,那里就有节省。如果不是,小文件的范围是否重叠?它们是按偏移量排序的吗?
标签: c# performance streaming cpu utilization