michael_wp原创:用.net实现zip----4-2
发表于:2007-06-30来源:作者:点击数:
标签:
/// summaryGlobal information about the zip file./summary [StructLayout(LayoutKind.Sequential)] internal struct ZipFileInfo { /// summaryThe number of entries in the directory./summary public UInt32 EntryCount; /// summaryLength of zip file
/// <summary>Global information about the zip file.</summary>
[StructLayout(LayoutKind.Sequential)]
internal struct ZipFileInfo {
/// <summary>The number of entries in the directory.</summary>
public UInt32 EntryCount;
/// <summary>Length of zip file comment in bytes (8 bit characters).</summary>
public UInt32 CommentLength;
}
[StructLayout(LayoutKind.Sequential)]
internal struct ZipFileEntryInfo {
public ZipDateTimeInfo DateTime;
public UInt32 DosDate;
public UInt32 InternalFileAttributes; // 2 bytes
public UInt32 ExternalFileAttributes; // 4 bytes
}
/// <summary>Custom ZipLib date time structure.</summary>
[StructLayout(LayoutKind.Sequential)]
internal struct ZipDateTimeInfo {
/// <summary>Seconds after the minute - [0,59]</summary>
public UInt32 Seconds;
/// <summary>Minutes after the hour - [0,59]</summary>
public UInt32 Minutes;
/// <summary>Hours since midnight - [0,23]</summary>
public UInt32 Hours;
/// <summary>Day of the month - [1,31]</summary>
public UInt32 Day;
/// <summary>Months since January - [0,11]</summary>
public UInt32 Month;
/// <summary>Years - [1980..2044]</summary>
public UInt32 Year;
// implicit conversion from DateTime to ZipDateTimeInfo
public static implicit operator ZipDateTimeInfo(DateTime date) {
ZipDateTimeInfo d;
d.Seconds = (uint) date.Second;
d.Minutes = (uint) date.Minute;
d.Hours = (uint) date.Hour;
d.Day = (uint) date.Day;
d.Month = (uint) date.Month - 1;
d.Year = (uint) date.Year;
return d;
}
}
/// <summary>Information stored in zip file directory about an entry.</summary>
[StructLayout(LayoutKind.Sequential)]
internal struct ZipEntryInfo {
// <summary>Version made by (2 bytes).</summary>
public UInt32 Version;
/// <summary>Version needed to extract (2 bytes).</summary>
public UInt32 VersionNeeded;
/// <summary>General purpose bit flag (2 bytes).</summary>
public UInt32 Flag;
/// <summary>Compression method (2 bytes).</summary>
public UInt32 CompressionMethod;
/// <summary>Last mod file date in Dos fmt (4 bytes).</summary>
public UInt32 DosDate;
/// <summary>Crc-32 (4 bytes).</summary>
public UInt32 Crc;
/// <summary>Compressed size (4 bytes).</summary>
public UInt32 CompressedSize;
/// <summary>Uncompressed size (4 bytes).</summary>
public UInt32 UncompressedSize;
/// <summary>Filename length (2 bytes).</summary>
public UInt32 FileNameLength;
/// <summary>Extra field length (2 bytes).</summary>
public UInt32 ExtraFieldLength;
/// <summary>File comment length (2 bytes).</summary>
public UInt32 CommentLength;
/// <summary>Disk number start (2 bytes).</summary>
public UInt32 DiskStartNumber;
/// <summary>Internal file attributes (2 bytes).</summary>
public UInt32 InternalFileAttributes;
/// <summary>External file attributes (4 bytes).</summary>
public UInt32 ExternalFileAttributes;
/// <summary>File modification date of entry.</summary>
public ZipDateTimeInfo DateTime;
}
}
原文转自:http://www.ltesting.net