Вы используете одно и то же имя для окна (<Window Name="Search"
) и типа code-behind (public partial class Search
). Вот на что жалуется компилятор. Поменяйте одно или другое, и оно будет работать.
При управлении zip-файлами можно хотеть изучить стороннюю библиотеку для помощи Вам.
, Например, DotNetZip, который был недавно обновлен. Текущая версия теперь v1.8. Вот пример для создания zip:
using (ZipFile zip = new ZipFile())
{
zip.AddFile("c:\\photos\\personal\\7440-N49th.png");
zip.AddFile("c:\\Desktop\\2005_Annual_Report.pdf");
zip.AddFile("ReadMe.txt");
zip.Save("Archive.zip");
}
Вот пример к обновление существующая zip; Вы не должны извлекать файлы, чтобы сделать это:
using (ZipFile zip = ZipFile.Read("ExistingArchive.zip"))
{
// 1. remove an entry, given the name
zip.RemoveEntry("README.txt");
// 2. Update an existing entry, with content from the filesystem
zip.UpdateItem("Portfolio.doc");
// 3. modify the filename of an existing entry
// (rename it and move it to a sub directory)
ZipEntry e = zip["Table1.jpg"];
e.FileName = "images/Figure1.jpg";
// 4. insert or modify the comment on the zip archive
zip.Comment = "This zip archive was updated " + System.DateTime.ToString("G");
// 5. finally, save the modified archive
zip.Save();
}
вот пример, который извлекает записи:
using (ZipFile zip = ZipFile.Read("ExistingZipFile.zip"))
{
foreach (ZipEntry e in zip)
{
e.Extract(TargetDirectory, true); // true => overwrite existing files
}
}
DotNetZip поддерживает многобайтовые символы в именах файлов, шифровании Zip, Шифровании AES, потоках, Unicode, самораспаковывающихся архивах. Также делает ZIP64, для длин файла, больше, чем 0xFFFFFFFF, или для архивов больше чем с 65 535 записями.
свободный. открытый исходный код
получает его в codeplex или прямая загрузка с windows.net - CodePlex был прекращен и заархивировал
От MSDN,
В этом образце, используется класс Пакета (в противоположность ZipPackage.) Работавший с обоими, я только видел, что облупленность происходит, когда существует повреждение в zip-файле. Не обязательно повреждение, которое бросает экстрактор Windows или Winzip, но что-то, что Упаковочные компоненты испытывают затруднения при обработке.
Hope, которой это помогает, возможно, это может предоставить Вам альтернативу отладке проблемы.
using System;
using System.IO;
using System.IO.Packaging;
using System.Text;
class ExtractPackagedImages
{
static void Main(string[] paths)
{
foreach (string path in paths)
{
using (Package package = Package.Open(
path, FileMode.Open, FileAccess.Read))
{
DirectoryInfo dir = Directory.CreateDirectory(path + " Images");
foreach (PackagePart part in package.GetParts())
{
if (part.ContentType.ToLowerInvariant().StartsWith("image/"))
{
string target = Path.Combine(
dir.FullName, CreateFilenameFromUri(part.Uri));
using (Stream source = part.GetStream(
FileMode.Open, FileAccess.Read))
using (Stream destination = File.OpenWrite(target))
{
byte[] buffer = new byte[0x1000];
int read;
while ((read = source.Read(buffer, 0, buffer.Length)) > 0)
{
destination.Write(buffer, 0, read);
}
}
Console.WriteLine("Extracted {0}", target);
}
}
}
}
Console.WriteLine("Done");
}
private static string CreateFilenameFromUri(Uri uri)
{
char [] invalidChars = Path.GetInvalidFileNameChars();
StringBuilder sb = new StringBuilder(uri.OriginalString.Length);
foreach (char c in uri.OriginalString)
{
sb.Append(Array.IndexOf(invalidChars, c) < 0 ? c : '_');
}
return sb.ToString();
}
}
От" Класс ZipPackage" (MSDN):
, В то время как Пакеты хранятся как zip-файлы* через класс ZipPackage, всеми zip-файлами не является ZipPackages. ZipPackage имеет особые требования, такие как совместимый URI файл (часть) имена и" [Content_Types].xml" файл, который определяет типы MIME для всех файлов, содержавшихся в Пакете. Класс ZipPackage не может использоваться для открытия arbitary zip-файлов, которые не соответствуют Открыть стандарту Packaging Conventions.
Для получения дальнейшей информации видят Раздел 9,2 "Отображений на Архив ZIP" ECMA International "Открытые Упаковочные Конвенции" стандарт, http://www.ecma-international.org/publications/files/ECMA-ST/Office%20Open%20XML%20Part%202%20 (DOCX) .zip (342 КБ) или http://www.ecma-international.org/publications/files/ECMA-ST/Office%20Open%20XML%20Part%202%20 (PDF) .zip (1.3 МБ)
, *You может просто добавить ".zip" к расширению любого находящегося в ZipPackage файла (.docx, .xlsx, .pptx, и т.д.) для открытия его в любимой утилите Zip.
Я согласовываю жгут из прутьев Cheeso. Система. IO.Packaging является неловким при обработке универсальных zip-файлов, наблюдении, поскольку он был разработан для Office Открытые XML-документы. Я предложил бы использовать DotNetZip или SharpZipLib