我使用_FileStream.Write(_ByteArray, 0, _ByteArray.Length);
将文件写入一个字节阵列。我注意到这很慢。 我从文本文件读取一行,将其转换为bytearray,然后需要将其写入新的(大于500 Mb)文件。请提供一些建议以加快写入过程。将文件快速写入文件
回答
FileStream.Write
基本上就是这样。这是可能使用BufferedStream
会有所帮助,但不太可能。
如果你是确实读取一行文本,当编码时,它是500MB,然后我不会惊讶地发现大部分时间都花费在执行编码上。你应该能够通过编码来测试,然后扔掉结果。
假设“编码”你表演只是Encoding.GetBytes(string)
,则可能需要使用StreamWriter
包住FileStream
尝试 - 它可以像重复编码同一数组写入文件之前,更好地工作,通过技巧。
如果你实际上每次读一本线和追加,要的文件,然后:
显然,这是最好的,如果你在整个操作过程都保持输入流和输出流开。不要反复阅读,然后写。
你可能使用多线程或可能异步IO获得更好的性能。这部分取决于你是否正在读写同一个驱动器。
使用
StreamWriter
可能仍然是一个好主意。
此外创建文件时,您可能想看看使用它接受FileOptions
构造。试用可用的选项,但我怀疑你会想要SequentialScan
和可能WriteThrough
。
文本文件中的每一行都包含一个纯文本值(32个字符)。我一次只读一行,使用Encoding.GetBytes(string)将每个值转换为一个字节数组,然后将字节写入新文件(导入另一个应用程序)。为这两个文件打开关闭一次。如果我使用StreamWriter写成“文本”,它会更快。 –
_FileStream = new FileStream(fileName,FileMode.Append,FileAccess.Write); –
@Robertico:对 - 在这种情况下,我建议你使用StreamWriter :)为什么你不*使用StreamWriter,因为它为你编码? –
如果你只写了字节数组,你试过用BinaryWriter的Write方法吗?批量写作也可能有助于提高速度。也许你可以阅读每一行,将字符串转换为字节,将这些字节存储为将来的写入操作(即在List中或某事中),并且每隔一段时间(在读取x行后)将大块写入磁盘。
BinaryWriter:http://msdn.microsoft.com/en-us/library/ms143302.aspx
- 1. Python快速读取和写入文件
- 2. 将字节数组写入文件的快速方法
- 3. 将SQL服务器表写入文件的快速方法
- 4. Mahout:(快速性能)如何将首选项写入文件?
- 5. 快速读/写xlsx文件到/从R
- 6. 将结构数组写入文本文件的快速高效的方法
- 7. 将文件写入
- 8. 将文字写入文件?
- 9. 快速导入CSV文件到Postgre
- 10. 快速跨平台算法读取/写入文件在C + +
- 11. http请求后快速写入日志文件
- 12. 在Android中快速写入大量数据文件
- 13. 在线文件存储,支持webdav快速读取和写入
- 14. 如何快速写入大量数据转化为txt文件
- 15. 快速读取和写入数据到文件
- 16. ASP.NET - 将文件写入文件共享
- 17. WriteFile将文件名写入文件
- 18. 如何将文件写入文件?
- 19. 难以将文件写入文件
- 20. 将文件路径写入.txt文件
- 21. Image Magick将文件写入文件夹
- 22. 将文件写入文件的错误
- 23. jquery快速读取文件
- 24. 快速文件读取
- 25. 快速评估文件
- 26. 快速复制tmp文件
- 27. 如何快速将所有Jade文件转换为Pug文件?
- 28. 如何快速将文件保存到文件上?
- 29. 提高写入文件的速度
- 30. 如何将二进制数据写入文件以便快速读取?
Define slow?读取和写入单独的磁盘,使用SSD。 –
我建议稍微详细一点。它在哪里慢 - 写入文件,转换为bytearray,或者你不知道,因为你没有分开这些。我建议你放一点代码。 – iandotkelly
所以......你一次只读一行,将其转换为一个字节数组,然后将这些字节写入另一个文件?你在做什么与OS文件复制操作不同? – Cameron