gpt4 book ai didi

c# - 文件 I/O 最佳实践 - byte[] 还是 FileStream?

转载 作者:行者123 更新时间:2023-11-30 14:35:02 24 4
gpt4 key购买 nike

我目前正在处理许多不同的文件类型(txt、二进制文件、office 等)。我通常使用 byte[]string 将文件数据保存在内存中(在写入/解析时),以便将其读/写到文件中在数据完全处理后,使用 FileStream 写入整个数据。

  • 在为文本文件生成数据时,我应该使用 TextStream 而不是 string 吗?
  • 在为二进制文件生成数据时,我应该使用 FileStream 而不是 byte[] 吗?
  • 与计算整个数据并在最后一次输出相比,使用流是否会给我更好的性能?
  • 文件 I/O 是否应始终使用流是一般规则,还是我的方法在某些情况下合适?

最佳答案

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com