2008-09-24 76 views

回答

34

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

+2

+1为一个全面的例子 - thx。 – barrypicker 2014-09-15 23:10:09

3

我有一个类似的问题展开反倾销调查300 MB字节数组到磁盘文件...
我用的StreamWriter,我花了一个很好的30分钟到转储文件。
使用FilePut花了我3到4分钟,当我用BinaryWriter时,文件在50-60秒内被转储。
如果您使用BinaryWriter,您将获得更好的性能。

1

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

+0

这是一个没人提及的重要细节,但是正如你指出W​​riteAllBytes并不是Memory的最有效方式,因为它消耗了大量的内存。在可能的情况下尽快写入它肯定会更好,我甚至可以通过使用带有较小缓冲区的StreamWriter进行更好的分配。 – ForceMagic 2017-07-11 13:07:24

7

而且WriteAllBytes只是执行

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

的BinaryWriter具有误导性的名称,它是用来编写元为一个字节表示,而不是写二进制数据。它的所有Write(byte [])方法都会对其使用的流(在本例中为FileStream)执行Write()。

相关问题