作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在处理许多不同的文件类型(txt、二进制文件、office 等)。我通常使用 byte[]
或 string
将文件数据保存在内存中(在写入/解析时),以便将其读/写到文件中在数据完全处理后,使用 FileStream
写入整个数据。
TextStream
而不是 string
吗?FileStream
而不是 byte[]
吗?最佳答案
byte[]/string 相对于流的优势可能是 byte[]/string 在内存中,访问它可能更快。但是,如果文件非常大,您可能最终会进行分页,从而降低性能。 byte[]/string 方法的另一个优点是解析可能更容易一些(例如,只需使用 File.ReadAllText)。
如果您的解析允许(特别是如果您不需要随机搜索),使用 FileStream 会更有效,尤其是在文件相当大的情况下。此外,您可以利用 C# (4.5) 的异步/等待功能非常轻松地异步读/写文件并处理您读入的 block 。
就个人而言,如果我不太担心性能,或者文件非常小,我可能会直接将文件读入内存。否则我会考虑使用流。
最后,如果您担心性能差异,我会说编写一些简单的测试程序并计算每个程序的性能,这应该会给您最好的答案。
关于c# - 文件 I/O 最佳实践 - byte[] 还是 FileStream?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12969555/
我是一名优秀的程序员,十分优秀!