public void SetData(byte[] data, int index, int count) {
using (var ms=new MemoryStream(data, index, count, false))
using (var helperStream=new ZipHelperStream(ms)) {
// bit 0 if set, modification time is present
// bit 1 if set, access time is present
// bit 2 if set, creation time is present
_flags=(Flags)helperStream.ReadByte();
if (((_flags&Flags.ModificationTime)!=0)&&(count>=5)) {
int iTime=helperStream.ReadLEInt();
_modificationTime=(new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime()+
new TimeSpan(0, 0, 0, iTime, 0)).ToLocalTime();
}
if ((_flags&Flags.AccessTime)!=0) {
int iTime=helperStream.ReadLEInt();
_lastAccessTime=(new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime()+
new TimeSpan(0, 0, 0, iTime, 0)).ToLocalTime();
}
if ((_flags&Flags.CreateTime)!=0) {
int iTime=helperStream.ReadLEInt();
_createTime=(new DateTime(1970, 1, 1, 0, 0, 0).ToUniversalTime()+
new TimeSpan(0, 0, 0, iTime, 0)).ToLocalTime();
}
}
}