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