internal static ZipIOLocalFileHeader CreateNew(string fileName, Encoding encoding, CompressionMethodEnum compressionMethod, DeflateOptionEnum deflateOption, bool streaming) { byte[] bytes = encoding.GetBytes(fileName); if (bytes.Length > ZipIOBlockManager.MaxFileNameSize) { throw new ArgumentOutOfRangeException("fileName"); } ZipIOLocalFileHeader header = new ZipIOLocalFileHeader(); header._signature = 0x4034b50; header._compressionMethod = (ushort)compressionMethod; if (streaming) { header._versionNeededToExtract = 0x2d; } else { header._versionNeededToExtract = (ushort)ZipIOBlockManager.CalcVersionNeededToExtractFromCompression(compressionMethod); } if (compressionMethod != CompressionMethodEnum.Stored) { header.DeflateOption = deflateOption; } if (streaming) { header.StreamingCreationFlag = true; } header._lastModFileDateTime = ZipIOBlockManager.ToMsDosDateTime(DateTime.Now); header._fileNameLength = (ushort)bytes.Length; header._fileName = bytes; header._extraField = ZipIOExtraField.CreateNew(!streaming); header._extraFieldLength = header._extraField.Size; header._stringFileName = fileName; return(header); }
internal static ZipIOCentralDirectoryFileHeader CreateNew(Encoding encoding, ZipIOLocalFileBlock fileBlock) { ZipIOCentralDirectoryFileHeader header = new ZipIOCentralDirectoryFileHeader(encoding); header._fileCommentLength = 0; header._fileComment = null; header._diskNumberStart = 0; header._internalFileAttributes = 0; header._externalFileAttributes = 0; header._versionMadeBy = 0x2d; header._extraField = ZipIOExtraField.CreateNew(false); header.UpdateFromLocalFileBlock(fileBlock); return(header); }