【问题标题】:StreamWriter : Is there a way to write to memory without writing directly to a disk?StreamWriter :有没有办法在不直接写入磁盘的情况下写入内存?
【发布时间】:2012-09-22 12:04:23
【问题描述】:

我有一个应用程序,它必须在某个时刻创建一个临时文件,然后将其删除。所以我正在考虑是否可以将临时文件创建到内存中而不是直接创建到磁盘中。然后我想从内存中读取它以执行一些操作,最后在做了一些事情之后,从内存中删除它。如果可能,如何在 .NET Framework 和 C# 中执行此操作。另外,直接使用内存而不是磁盘会影响性能吗?

我想直接使用内存而不是磁盘,因为我害怕某种不允许将文件写入磁盘某些位置的 Windows 权限......所以另一个疑问是:如果使用磁盘而不是内存是有一个安全的地方可以写入临时文件并避免 Windows XP、Vista、7、8 的写入权限冲突吗?我的意思是,一个总是可以安全地写入临时文件然后删除它的地方。也许,在 user\Local Settings\Temp 文件夹中?这是最好的地方吗?我想知道一个安全的地方来保存临时文件,然后删除它们适用于 Windows 版本:XP、Vista、7 和 8。

谢谢。

【问题讨论】:

    标签: windows temporary-files


    【解决方案1】:

    您可以使用MemoryStream 写入内存而不是磁盘。使用内存流可能会提高性能,因为磁盘通常写入速度较慢。一如既往:优化前的配置文件。

    有关临时文件夹的信息,请参阅此主题:How to get temporary folder for current user

    【讨论】:

      【解决方案2】:

      您应该能够编写自己的继承自 Stream 类的类,覆盖其方法(读/写等),并在其中维护您自己的字符串构建器或任何适合您的东西。一切都会在内存中,当然会非常快。

      我认为 XP 有“文档和设置”,vista/7 有用户文件夹,每个用户都有自己的位置来写临时文件,在那里写应该没有问题。你的想法是正确的imo。

      【讨论】:

      • 如果 .NET 框架中已经存在圆轮,请不要发明自己的方轮。
      • 其实不是方轮,我觉得你识别轮子有问题?这是一个完美的圆形轮子,当你自己(偶尔)而不是在社交网络上浪费时间和分享无用信息时,你发现自己是一个更好的程序员。是的,我同意 MemoryStream 在这里绝对相关,这实际上跳过了我的想法,我的错。
      • 有趣的方法!但不要忘记 Int32.MaxValue 的 StringBuilder 大小限制
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-16
      • 1970-01-01
      • 2018-01-18
      • 1970-01-01
      • 1970-01-01
      • 2011-02-20
      • 2017-10-22
      相关资源
      最近更新 更多