private Encoding ChooseEncoding(FileNamesEncodingInZipFile encoding) { if (encoding == FileNamesEncodingInZipFile.Auto || encoding == FileNamesEncodingInZipFile.OsEncodingWithUtf8) { return(null); } return(Encoding.UTF8); }
private ZipOption ChooseEncodingMode(FileNamesEncodingInZipFile encoding) { if (encoding == FileNamesEncodingInZipFile.OsEncodingWithUtf8) { return(ZipOption.AsNecessary); } return(ZipOption.Always); }
public void Open(string filename, string password = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto) { ZipFile.DefaultEncoding = Encoding.GetEncoding(866); // f**k non-russian encodings on non-ascii files _zip = ZipFile.Read(filename, new ReadOptions() { Encoding = ChooseEncoding(encoding) }); _zip.Password = password; }
public void Open(IStreamWrapper stream, string password = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto) { ZipFile.DefaultEncoding = Encoding.GetEncoding(866); // f**k non-russian encodings on non-ascii files _zip = ZipFile.Read(stream.GetUnderlyingStream(), new ReadOptions() { Encoding = ChooseEncoding(encoding) }); _zip.Password = password; }
public static ZipWriter ConstructByFileOptions( IValue filename, IValue password = null, IValue comment = null, IValue compressionMethod = null, IValue compressionLevel = null, IValue encryptionMethod = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto) { var zip = new ZipWriter(); zip.Open(filename.AsString(), ConvertParam <string>(password), ConvertParam <string>(comment), ConvertParam <SelfAwareEnumValue <ZipCompressionMethodEnum> >(compressionMethod), ConvertParam <SelfAwareEnumValue <ZipCompressionLevelEnum> >(compressionLevel), ConvertParam <SelfAwareEnumValue <ZipEncryptionMethodEnum> >(encryptionMethod), encoding); return(zip); }
public void Open( string filename, string password = null, string comment = null, SelfAwareEnumValue <ZipCompressionMethodEnum> compressionMethod = null, SelfAwareEnumValue <ZipCompressionLevelEnum> compressionLevel = null, SelfAwareEnumValue <ZipEncryptionMethodEnum> encryptionMethod = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto) { ZipFile.DefaultEncoding = Encoding.GetEncoding(866); // f**k non-russian encodings on non-ascii files _filename = filename; _zip = new ZipFile(); _zip.AlternateEncoding = Encoding.UTF8; _zip.AlternateEncodingUsage = ChooseEncodingMode(encoding); _zip.Password = password; _zip.Comment = comment; _zip.CompressionMethod = MakeZipCompressionMethod(compressionMethod); _zip.CompressionLevel = MakeZipCompressionLevel(compressionLevel); _zip.UseZip64WhenSaving = Zip64Option.AsNecessary; _zip.Encryption = MakeZipEncryption(encryptionMethod); }
public void Open(IValue filenameOrStream, string password = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto) { // f**k non-russian encodings on non-ascii files ZipFile.DefaultEncoding = Encoding.GetEncoding(866); if (filenameOrStream.DataType == DataType.String) { _zip = ZipFile.Read(filenameOrStream.AsString(), new ReadOptions { Encoding = ChooseEncoding(encoding) }); } else if (filenameOrStream.AsObject() is IStreamWrapper stream) { _zip = ZipFile.Read(stream.GetUnderlyingStream(), new ReadOptions { Encoding = ChooseEncoding(encoding) }); } else { throw RuntimeException.InvalidArgumentType(nameof(filenameOrStream)); } _zip.Password = password; }
public ZipReader(IValue filenameOrStream, string password = null, FileNamesEncodingInZipFile encoding = FileNamesEncodingInZipFile.Auto) { Open(filenameOrStream, password, encoding); }