在内存中创建一个"directory"?
Create a "directory" in memory?
我正在使用 C# 工作,正在寻找一种方法来创建指向将映射到 IO.Stream 而不是实际文件系统的目录的路径。
我希望能够 "save" 文件到该路径,操作内容或文件名,然后将它们从该路径保存到文件系统中的常规文件。
我知道我可以使用临时文件,但为了安全和性能我宁愿使用内存。
这种东西是存在的,according to this answer, in Java
, using the FileSystemProvider
class。我正在寻找一种在 c# 中执行此操作的方法。
我尝试了所有我能想到的搜索,结果只得到 java 使用临时文件的答案和建议。
甚至可以使用 .net 吗?
基本上,我正在寻找一种方法来将文件直接保存到内存中,就好像它们保存在文件系统中一样。
因此,例如,如果我有一个公开保存方法(save(string fullPath)
)的第 3 方 class,或类似 SmtpServer.Send(MyMsg)
的东西,我可以选择该路径并将其保存到内存流中而不是驱动器上。 (这里最主要的是我想提供一个 path
直接导致 memory stream
)。
.NET 在主机 OS 的文件系统上没有抽象层。因此,除非您可以构建自己的用于自定义代码,并且您需要涵盖第 3 方库,否则只有两个可行的选项:
- 使用流并避免任何使用文件名的 API。
- 构建插入主机OS存储架构的虚拟文件系统;然而,相对于收益所需的努力是非常值得怀疑的。
我最近遇到了类似的情况,虽然我使用了一种对我来说高效且安全的解决方法,但 .NET 中没有开箱即用的解决方案。
使用 Ionic.Zip Nuget 包,您可以在内存中创建具有复杂结构的整个目录作为流zip 文件作为流。
using (var zip = new Ionic.Zip.ZipFile())
{
zip.AddEntry($"file1.json", new MemoryStream(Encoding.UTF8.GetBytes(someJsonContent)));
for (int i = 0; i < 4; i++)
{
zip.AddEntry($"{myDir}/{i}.json", new MemoryStream(Encoding.UTF8.GetBytes(anotherJsonContent)));
}
}
这里是如何extract a zip file as a stream using Ionic.Zip
我正在使用 C# 工作,正在寻找一种方法来创建指向将映射到 IO.Stream 而不是实际文件系统的目录的路径。
我希望能够 "save" 文件到该路径,操作内容或文件名,然后将它们从该路径保存到文件系统中的常规文件。
我知道我可以使用临时文件,但为了安全和性能我宁愿使用内存。
这种东西是存在的,according to this answer, in Java
, using the FileSystemProvider
class。我正在寻找一种在 c# 中执行此操作的方法。
我尝试了所有我能想到的搜索,结果只得到 java 使用临时文件的答案和建议。
甚至可以使用 .net 吗?
基本上,我正在寻找一种方法来将文件直接保存到内存中,就好像它们保存在文件系统中一样。
因此,例如,如果我有一个公开保存方法(save(string fullPath)
)的第 3 方 class,或类似 SmtpServer.Send(MyMsg)
path
直接导致 memory stream
)。
.NET 在主机 OS 的文件系统上没有抽象层。因此,除非您可以构建自己的用于自定义代码,并且您需要涵盖第 3 方库,否则只有两个可行的选项:
- 使用流并避免任何使用文件名的 API。
- 构建插入主机OS存储架构的虚拟文件系统;然而,相对于收益所需的努力是非常值得怀疑的。
我最近遇到了类似的情况,虽然我使用了一种对我来说高效且安全的解决方法,但 .NET 中没有开箱即用的解决方案。
使用 Ionic.Zip Nuget 包,您可以在内存中创建具有复杂结构的整个目录作为流zip 文件作为流。
using (var zip = new Ionic.Zip.ZipFile())
{
zip.AddEntry($"file1.json", new MemoryStream(Encoding.UTF8.GetBytes(someJsonContent)));
for (int i = 0; i < 4; i++)
{
zip.AddEntry($"{myDir}/{i}.json", new MemoryStream(Encoding.UTF8.GetBytes(anotherJsonContent)));
}
}
这里是如何extract a zip file as a stream using Ionic.Zip