将内存流表示为物理文件

Ano*_*ous 5 c# filesystems api memorystream

我今天遇到了一个愚蠢的问题:

在我的项目中我必须使用一个库(我无法替换),他的问题是我正在使用MemoryStream而不是经常保存到 HDD(因为文件很多,而且它们的大小很小,所以它很完美为MemoryStream)。问题是库 API 是围绕文件系统访问构建的 - 其中一个函数只接受文件的直接路径。

我如何仍然向该方法发送一个字符串(路径),从而在FileStream不实际接触硬盘的情况下创建一个新的?

例如“\MEMORY\myfile.bin”?

Mar*_*gal 1

嗯——就是这么想。
基本上,您有三种可能的解决方案:

  1. 您可以使用反射器来修改给定的库。
  2. 您可以检查适当的方法,然后通过使用一些反射魔法,您可以在运行时修改对象(非常不推荐)
  3. 您可以尝试使用系统调用和 API - 并通过进入低级 Ring0 程序集修改kernal.dll来从内存路径引用 I/O 查询。(也许没有ring0访问权限也是可能的——我不确定)。

显然,最推荐的是使用反射器来修改给定的库。否则,我无法为您找到解决方案。

为了回应第一条评论,您可以:
使用 RAMDrive (一个分配小块系统内存并将其显示为分区的程序)