我有一个文件要填满,所以我想最好同时完成。
注意事项:
- 我同时从多台计算机获取文件。
- 我每次都在调用 StartWrite 之前设置位置。 -> 我是否必须在每次使用前锁定它?
它好用吗?你有更好的吗?
顺便说一句,Stream.Flush() 是什么?
谢谢。
不,这在概念上是错误的。 Stream(我假设你的意思是 System.IO.Stream 类)是一个抽象类。当您实例化一个对象时,您正在使用许多子类之一。
假设任何关于子类的方法都是错误的,因为:
a) 有人可能会追着你修改你的代码,却看不到实际的子类实现做了什么。b) 不太可能,但实现可能会改变。例如,如果有人在 Mono 框架上安装您的代码怎么办。
如果您正在使用 FileStream 类,请考虑使用 FileShare 在同一基础文件上创建两个(或更多)FileStream 对象。参数设置为写入。通过这种方式,您可以指定可能同时写入,但每个流都有自己的位置指针。
更新:现在我才看到你的评论“每台计算机都给我发送一个包含起始索引、结束索引和字节[]”的部分。实际上,对于这种情况,多个 FileStreams 应该可以正常工作。
void DataReceived(int start, byte[] data)
{
System.IO.FileStream f = new System.IO.FileStream("file.dat", System.IO.FileMode.Open, System.IO.FileAccess.Write, System.IO.FileShare.ReadWrite);
f.Seek(start, System.IO.SeekOrigin.Begin);
f.Write(data, start, data.Length);
f.Close();
}
我是一名优秀的程序员,十分优秀!