【问题标题】:Redirect writes to a file to a stream C#将对文件的写入重定向到流 C#
【发布时间】:2010-11-22 05:40:56
【问题描述】:

我想问是否可以将写入重定向到特定文件,重定向到我的应用程序中的内存流,以便我可以立即读取它。 如果可能,请说明如何操作。

谢谢。

【问题讨论】:

  • 您的应用程序是在写入文件还是其他不受您控制的应用程序?
  • 我认为您对流的概念可能不正确,听起来您的真正意思是......我可以将写入重定向到特定文件,重定向到我的应用程序中的内存流。
  • @PVitt 是的,这是另一个我无法控制的应用程序。 @meandmycode 是的,我就是这个意思

标签: c# .net file stream filestream


【解决方案1】:

我不知道如何按照您所说的方式执行此操作,但您可以使用 FileWatcher 来挂钩文件。如果它写给你,你会收到通知,你可以阅读它。

【讨论】:

  • 我认为这还不够快。
【解决方案2】:

确保您的应用程序使用Stream,然后您可以使用MemoryStream 具体实现来完成没有文件的流。

【讨论】:

  • 是的,但请注意 MemStram 只有 1 个位置 - 您不能轻松地交错读取和写入。
【解决方案3】:

您需要的是一个写入文件的流以及您正在观看的另一个流 - 一个流拆分器,在 Unix 世界中通常称为 tee

对于 .NET,您可以使用流拆分器的 this implementation。将FileStream 传递给它(以便将文件写入),对于第二个流,传递Stream 实现,该实现在写入流时执行您想要的任何操作(例如,MemoryStream 的子类带有覆盖Write 方法)。

更新:我从您的评论中看到我的答案不是您所需要的 - 从您最初的问题中我没有意识到您无法控制应用程序写入文件。 p>

为了获得这种控制,为了获得最好的控制,您需要使用拦截系统调用的低级驱动程序 - 就像FileMon 所做的那样。对于稍微少一点的控制,你可以使用System.IO.FileSystemWatcher

【讨论】:

  • 也许我不明白 echostream 的用途,但我的情况是我有 2 个应用程序 - 其中一个是我无法控制的应用程序,它正在写入日志文件,另一个是我的 C# 应用程序。现在我想要的是以某种方式将写入日志的内容重定向到我的 C# 中的流中。此外,该程序将大量数据写入日志,这就是我需要它快速的原因。
猜你喜欢
  • 1970-01-01
  • 2012-08-02
  • 1970-01-01
  • 2023-03-06
  • 2019-10-27
  • 2013-12-02
  • 1970-01-01
  • 2020-12-17
  • 2012-12-07
相关资源
最近更新 更多