所以据我所知,我应该能够通过简单地将资源管理器指向它们(即,将它们用作虚拟文件夹)来访问 zip 文件内的文件,例如,c:\test.zip\test.txt
如果我的 test.zip 包含文件 test.txt。
然而,这对我来说不起作用。相反,我得到了一个“系统找不到指定的路径”弹出窗口。这有点奇怪,因为 explorer 似乎识别了存档中的 test.txt 文件,因为在 zip 文件后添加反斜杠后,它“建议”存档中的文件 test.txt。
我还听说我应该能够通过 C# 应用程序中的 URI 使用这些文件,但是在那里我得到了一个 TargetInvocationException,它说的几乎是一样的,找不到指定的路径。
那么,我是否只是误解了整个概念,是我做错了什么,还是我的系统出了问题?
答案1
据我所知,查看 zip 存档内的文件的能力是“Explorer.exe”的功能,而不是“Windows 文件子系统”的功能;
所以当你打开Explorer 中的表单c:\test.zip\test.txt
,它实际上会提取文件并将其放置在临时文件夹中,然后打开是从那个位置来的。
为了从任何其他程序(包括您自己的程序)访问该文件,您首先需要提取该文件。
编辑:要从 C# 进行访问,请参见https://stackoverflow.com/questions/507751/extracting-files-from-a-zip-archive-programmatically-using-c-and-system-io-packa