我正在尝试使用SharpZipLib从zip存档中提取指定的文件.我见过的所有例子总是希望你能解压缩整个拉链,并按照以下方式做一些事情:
FileStream fileStreamIn = new FileStream (sourcePath, FileMode.Open, FileAccess.Read);
ZipInputStream zipInStream = new ZipInputStream(fileStreamIn);
ZipEntry entry;
while (entry = zipInStream.GetNextEntry() != null)
{
// Unzip file
}
Run Code Online (Sandbox Code Playgroud)
我想做的是:
ZipEntry entry = zipInStream.SeekToFile("FileName");
Run Code Online (Sandbox Code Playgroud)
因为我的需求涉及使用zip作为包,只根据需要将文件抓取到内存中.
有人熟悉SharpZipLib吗?有没有人知道我是否可以手动完成整个拉链?
我在使用 Shell32 CopyHere 方法时遇到了一些问题。
首先,我从这个页面工作:http : //www.codeproject.com/Tips/257193/Easily-zip-unzip-files-using-Windows-Shell32
我希望用 C# 重写类似的东西,因为我几乎没有在 VB.NET 中工作过。
我正在传递一个输入目录,其中有一个文本文件作为我的测试。在底部,只是为了让我看到它实际上是在抓取我的文件,我写了 input.Items() 的计数,我得到了 1,所以我认为它看到的是我的目录,其中包含一个文本文件。但是,虽然我的代码创建了空的 zip 文件就好了,并且至少从控制台输出似乎正在抓取我的文件,但它实际上并没有将任何内容复制到 zip 文件中。不会抛出任何错误,就好像什么都没发生一样。
static void Zip(string i, string o)
{
//Turn relative paths into full paths for Shell.NameSpace method.
string ifp = Path.GetFullPath(i);
string ofp = Path.GetFullPath(o);
//Validate parameters.
if (!(Directory.Exists(ifp)) || (Directory.GetFiles(ifp).Count() <= 0))
throw new Exception("Input directory " + i + " was invalid. " + i + " was either empty or doesn't exist.");
string ext = ofp.Substring(ofp.Length - …
Run Code Online (Sandbox Code Playgroud)