什么是最有效的方式来保存字节数组作为在C#磁盘上的文件?

很简单的情况。 我有一个Web服务接收一个字节数组,将被保存为一个特定的文件types在磁盘上。 C#中最有效的方法是什么?

这将是File.WriteAllBytes()

System.IO.File.WriteAllBytes(path, data)应该没问题。

不知道在这种情况下,“高效”是什么意思,但我会使用System.IO.File.WriteAllBytes(stringpath,字节[]字节) – 在LOC方面肯定是有效的。

而WriteAllBytes只是执行

 using (FileStream stream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.Read)) { stream.Write(bytes, 0, bytes.Length); } 

BinaryWriter有一个令人误解的名字,它的目的是将原语写成字节表示而不是写入二进制数据。 它所有的Write(byte [])方法都是在其使用的stream上执行Write(),在这种情况下是FileStream。

也许System.IO.BinaryWriter和BinaryReader类会有所帮助。

http://msdn.microsoft.com/en-us/library/system.io.binarywriter.aspx

“将二进制原始types写入stream并支持以特定编码写入string”

http://msdn.microsoft.com/en-us/library/system.io.binaryreader.aspx

“以特定的编码方式将原始数据types读取为二进制值”。

我有一个类似的问题,300MB的字节数组转储到磁盘文件…
我使用StreamWriter ,花了我30分钟的时间来转储文件。
使用FilePut花了我3-4分钟,当我使用BinaryWriter ,文件被倾倒50-60秒。
如果你使用BinaryWriter你将会有更好的performance。

实际上,最有效的方法是将数据stream式传输,并在收到数据时进行写入。 WCF支持stream媒体,所以这可能是你想要看的东西。 如果你使用大文件来做这件事,这一点尤其重要,因为你几乎肯定不希望服务器和客户端上的内存中的文件内容。