从流创建虚拟文件路径
Posted
技术标签:
【中文标题】从流创建虚拟文件路径【英文标题】:Create virtual file path from stream 【发布时间】:2013-04-09 20:36:53 【问题描述】:我有一个关于 C# 和 Windows API 的一般性问题:
我的任务是从文档管理系统 (DMS) 加载文件并从该文件创建一个字节数组。从 DMS 的开发人员那里,我得到了一个 dll,它提供了这样的方法:
loadFile(int DocId, string PathToSaveFile);
不幸的是,给定的 dll 没有为我提供将请求的文件作为字节数组或任何类型的流传递的方法。现在我的问题是,是否可以使用 C# 创建某种虚拟路径,而该虚拟路径实际上并不存在于辅助存储中。相反,写入此路径的所有位和字节都以流的形式转发给我?我的目标是提高性能,因为我不必将数据写入硬盘。
我已经搜索了很多,但实际上我不知道我要查找的关键字。也许有人可以给我一个提示,或者只是告诉我这根本不可能。
【问题讨论】:
WEBDAV 服务器?例如,webdavsystem.com 旁注:“提高性能,因为我不必将数据写入硬盘。” - 要求您很好地计划内存/磁盘的使用。否则,您最终会得到更多可以合理地放入机器物理内存的数据,而不是提高性能,您会得到更慢且更复杂的代码。写起来很有趣,但没必要更快。 【参考方案1】:这在一定程度上取决于库如何打开文件和读取文件。如果它使用CreateFile,那么您有可能通过命名管道提供访问权限。可以使用\\.\pipe\PipeNameHere
指定命名管道的路径。在 C# 中,您可以使用 NamedPipeServerStream。
但是,我认为客户端应用程序与此兼容的可能性相对较小,建议创建一个RAM drive,这样更容易实现并且更有可能工作。 RAM 驱动器将显示为普通磁盘驱动器。您可以将文件保存和加载到它,但这一切都在内存中完成。
【讨论】:
以上是关于从流创建虚拟文件路径的主要内容,如果未能解决你的问题,请参考以下文章
virtualenv -p 创建新虚拟环境时删除 sys.prefix 文件路径的最后一部分