public SetData ( byte data, int index, int count ) : void | ||
data | byte | The raw data to extract values from. |
index | int | The index to start extracting values from. |
count | int | The number of bytes available. |
Результат | void |
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();
}
}
}
public void TaggedDataHandling() { NTTaggedData tagData = new NTTaggedData(); DateTime modTime = tagData.LastModificationTime; byte[] rawData = tagData.GetData(); tagData.LastModificationTime = tagData.LastModificationTime + TimeSpan.FromSeconds(40); Assert.AreNotEqual(tagData.LastModificationTime, modTime); tagData.SetData(rawData, 0, rawData.Length); Assert.AreEqual(10, tagData.TagID, "TagID mismatch"); Assert.AreEqual(modTime, tagData.LastModificationTime, "NT Mod time incorrect"); tagData.CreateTime=DateTime.FromFileTimeUtc(0); tagData.LastAccessTime=new DateTime(9999, 12, 31, 23, 59, 59); rawData=tagData.GetData(); ExtendedUnixData unixData = new ExtendedUnixData(); modTime = unixData.ModificationTime; unixData.ModificationTime=modTime; // Ensure flag is set. rawData = unixData.GetData(); unixData.ModificationTime += TimeSpan.FromSeconds(100); Assert.AreNotEqual(unixData.ModificationTime, modTime); unixData.SetData(rawData, 0, rawData.Length); Assert.AreEqual(0x5455, unixData.TagID, "TagID mismatch"); Assert.AreEqual(modTime, unixData.ModificationTime, "Unix mod time incorrect"); }