快速将bytearray写入文件

时间:2011-08-18 16:23:15

标签: c# bytearray

我使用_FileStream.Write(_ByteArray, 0, _ByteArray.Length);将bytearray写入文件。我注意到这很慢。 我从文本文件中读取一行,将其转换为bytearray,然后将其写入新的(大型> 500 Mb)文件。请加快写入过程的一些建议。

2 个答案:

答案 0 :(得分:1)

FileStream.Write基本上就是这样。 可能使用BufferedStream会有所帮助,但不太可能。

如果你真的正在读取一行文本,当编码时,这个文本是500MB,那么我不会惊讶地发现大部分时间用于执行编码。您应该能够通过编码然后丢弃结果来测试它。

假设您正在执行的“编码”只是Encoding.GetBytes(string),您可能想尝试使用StreamWriter来包装FileStream - 它可能会通过重复编码等技巧更好地工作在写入文件之前进入相同的数组。

如果您实际上一次读取并将其附加到该文件,则:

  • 显然,最好是在整个操作过程中保持输入流和输出流都打开。不要反复阅读然后再写。

  • 可能使用多个线程或可能的异步IO获得更好的性能。这部分取决于您是否正在读取和写入同一驱动器。

  • 使用StreamWriter可能仍然是一个好主意。

此外,在创建文件时,可能希望使用接受FileOptions的构造函数。尝试使用可用选项,但我怀疑您需要SequentialScan可能 WriteThrough

答案 1 :(得分:0)

如果您只写字节数组,那么您是否尝试过使用BinaryWriter的Write方法?批量写作可能也有助于提高速度。也许您可以读取每一行,将字符串转换为其字节,将这些字节存储为将来的写操作(即在List或其他内容中),并且经常(在读取x行之后)将一个块写入磁盘。

BinaryWriter:http://msdn.microsoft.com/en-us/library/ms143302.aspx