作者热门文章
- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - ruby/ruby on rails 内存泄漏检测
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
我有文件(来自第 3 方)正在通过 FTP 传输到我们服务器上的目录。我下载它们并处理它们甚至“x”分钟。效果很好。
现在,一些文件是 .zip
文件。这意味着我无法处理它们。我需要先解压它们。
FTP 没有压缩/解压缩的概念 - 所以我需要获取 zip 文件,解压缩,然后处理它。
查看 MSDN zip api ,我似乎无法解压缩到内存流?
唯一的办法就是...
注意:文件的内容很小 - 比如 4k <-> 1000k。
最佳答案
内置 Zip 压缩支持:
using System.IO;
using System.IO.Compression;
// ^^^ requires a reference to System.IO.Compression.dll
static class Program
{
const string path = ...
static void Main()
{
using(var file = File.OpenRead(path))
using(var zip = new ZipArchive(file, ZipArchiveMode.Read))
{
foreach(var entry in zip.Entries)
{
using(var stream = entry.Open())
{
// do whatever we want with stream
// ...
}
}
}
}
}
通常你应该避免将它复制到另一个流中 - 只需“按原样”使用它,但是,如果你在 MemoryStream
中绝对需要它,你可以这样做:
using(var ms = new MemoryStream())
{
stream.CopyTo(ms);
ms.Position = 0; // rewind
// do something with ms
}
关于c# - 如何将文件解压缩到 .NET 内存流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22604941/
我是一名优秀的程序员,十分优秀!