我有一些文件(来自第三方),它们被FTP到我们服务器上的一个目录中。我会每隔 'x' 分钟下载并处理它们,效果很好。
现在,有些文件是 .zip
格式的。这意味着我不能直接处理它们,需要先解压缩。
FTP 协议没有 zip/unzip 的概念 - 因此我需要获取 zip 文件,解压缩它,然后再进行处理。
查看 MSDN zip api,似乎没有办法将文件解压缩到内存流中?
那么,唯一的方法是...
- 解压缩到文件 (要使用什么目录?需要一些非常临时的位置...)
- 读取文件内容
- 删除文件
注意:文件的内容很小 - 大小在 4k <-> 1000k 之间。
ZipFile
类的所有方法实际上都是关于ZipArchive
类的 - 对我来说,它们应该都是ZipArchive
的静态成员!但更具体地说,因为 OP 谈论的是从现有来源获取数据 - 在这种情况下是 FTP。在这种情况下,你不能保证你有一个文件,但通常可以假设你有一个流。因此,展示如何从流中获取数据更加可重用和适用于任何上下文,而不仅仅是文件。但当然:你可以在这里使用ZipFile.OpenRead
。 - Marc GravellZipFile
需要额外的程序集引用(System.IO.Compression.FileSystem.dll),只是为了避免使用简单的File.OpenRead
- 这似乎不值得。 - Marc Gravell