UWP Ionic zip lib без сжатия
Попытка создать zip-файл в UWP с использованием библиотеки Ionic zip. Я вручную добавил Ionic.Zip.dll в проект. После этого приведенный ниже код дал исключение.
using (ZipFile zip = new ZipFile()) -------------> Exception on this line
{
zip.Password = "password";
zip.AddFile(file.Name);
zip.Save();
}
Исключение: System.ArgumentException: ''IBM437'не является поддерживаемым именем кодировки. Информацию об определении пользовательской кодировки см. В документации по методу Encoding.RegisterProvider. '
Перейдя по приведенной ниже ссылке на этот вопрос и изменив project.json, а также приведенные ниже строки кода: .NET Core не знает о Windows 1252, как это исправить?
Encoding.RegisterProvider(CodePagesEncodingProvider.Instance);
var enc1252 = Encoding.GetEncoding(437);
Но теперь я получаю следующее исключение в той же строке. System.TypeLoadException: "Не удалось загрузить тип" System.IO.File "из сборки" mscorlib, версия =4.0.0.0, культура = нейтральная, PublicKeyToken=7cec85d7bea7798e'.'
Не совсем уверен, что происходит не так. Нужна помощь.
Также есть ли какая-либо библиотека для UWP, которая помогает установить пароль для zip-файла? DotnetZip и CSharpZip не поддерживают тип проекта UWP.
1 ответ
Мы не можем добавить пароль в ZipFile с помощью библиотеки Ionic zip. Библиотека System.IO.Compression по умолчанию также не имеет свойства пароля.
Мы должны иметь возможность использовать сторонний пакет NuGet для добавления пароля, такой как Chilkat.uwp. Мы можем использовать Zip.SetPassword
способ установить пароль для файла zip.
Например:
Chilkat.Zip zip = new Chilkat.Zip();
bool success;
Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.TemporaryFolder;
string a = localFolder.Path + "\\sample.zip";
success = zip.NewZip(a);
if (success != true)
{
Debug.WriteLine(zip.LastErrorText);
return;
}
zip.SetPassword("secret");
zip.PasswordProtect = true;
bool saveExtraPath;
saveExtraPath = false;
StorageFolder appInstalledFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
StorageFolder assets = await appInstalledFolder.GetFolderAsync("Assets");
string filePath = assets.Path + "\\rainier.jpg";
success = await zip.AppendOneFileOrDirAsync(filePath, saveExtraPath);
bool success2 = await zip.WriteZipAndCloseAsync();
if (success != true)
{
Debug.WriteLine(zip.LastErrorText);
return;
}
Debug.WriteLine("Zip Created!");