ICSharpCode.SharpZipLib.Zip.NTTaggedData.GetData C# (CSharp) Method

GetData() public method

Get the binary data representing this instance.
public GetData ( ) : byte[]
return byte[]
        public byte[] GetData() {
            using (var ms=new MemoryStream())
            using (var helperStream=new ZipHelperStream(ms)) {
                helperStream.IsStreamOwner=false;
                helperStream.WriteLEInt(0); // Reserved
                helperStream.WriteLEShort(1); // Tag
                helperStream.WriteLEShort(24); // Length = 3 x 8.
                helperStream.WriteLELong(_lastModificationTime.ToFileTime());
                helperStream.WriteLELong(_lastAccessTime.ToFileTime());
                helperStream.WriteLELong(_createTime.ToFileTime());
                return ms.ToArray();
            }
        }

Usage Example

Example #1
0
        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");
        }