internal void SetDirectoryEntryMetadataValue(FatDirectoryEntryMetadata entryMetadata, string value)
        {
            if (IsRootDirectory())
            {
                throw new Exception("Root directory metadata can not be changed using the file stream.");
            }

            var data = ((FatDirectoryEntry)Parent).GetDirectoryEntryData();

            if (data.Length > 0)
            {
                var value2 = new byte[entryMetadata.DataLength];
                var value3 = Encoding.UTF8.GetBytes(value);
                for (var i = 0; i < value2.Length; i++)
                {
                    if (i < value3.Length)
                    {
                        value2[i] = value3[i];
                    }
                    else
                    {
                        value2[i] = 32;
                    }
                }
                var offset = EntryHeaderDataOffset + entryMetadata.DataOffset;
                Array.Copy(value2, 0, data, offset, entryMetadata.DataLength);
                ((FatDirectoryEntry)Parent).SetDirectoryEntryData(data);
            }
        }
        internal void SetLongFilenameEntryMetadataValue(uint entryHeaderDataOffset, FatDirectoryEntryMetadata entryMetadata, string value)
        {
            var data = GetDirectoryEntryData();

            if (data.Length > 0)
            {
                var value2 = Encoding.Unicode.GetBytes(value);
                var offset = entryHeaderDataOffset + entryMetadata.DataOffset;
                Array.Copy(value2, 0, data, (int)offset, (int)entryMetadata.DataLength);
                SetDirectoryEntryData(data);
            }
        }
        internal void SetLongFilenameEntryMetadataValue(uint entryHeaderDataOffset, FatDirectoryEntryMetadata entryMetadata, long value)
        {
            var data = GetDirectoryEntryData();

            if (data.Length > 0)
            {
                var value2 = new byte[entryMetadata.DataLength];
                value2.SetUInt32(0, (uint)value);
                var offset = entryHeaderDataOffset + entryMetadata.DataOffset;
                Array.Copy(value2, 0, data, (int)offset, (int)entryMetadata.DataLength);
                SetDirectoryEntryData(data);
            }
        }
        internal void SetDirectoryEntryMetadataValue(FatDirectoryEntryMetadata entryMetadata, byte value)
        {
            if (IsRootDirectory())
            {
                throw new Exception("Root directory metadata can not be changed using the file stream.");
            }

            var data = ((FatDirectoryEntry)Parent).GetDirectoryEntryData();

            if (data.Length > 0)
            {
                var offset = EntryHeaderDataOffset + entryMetadata.DataOffset;
                data[offset] = value;
                ((FatDirectoryEntry)Parent).SetDirectoryEntryData(data);
            }
        }
        internal void SetDirectoryEntryMetadataValue(FatDirectoryEntryMetadata entryMetadata, long value)
        {
            if (IsRootDirectory())
            {
                throw new Exception("Root directory metadata can not be changed using the file stream.");
            }

            var data = ((FatDirectoryEntry)Parent).GetDirectoryEntryData();

            if (data.Length > 0)
            {
                var value2 = new byte[entryMetadata.DataLength];
                value2.SetUInt32(0, (uint)value);
                var offset = EntryHeaderDataOffset + entryMetadata.DataOffset;
                Array.Copy(value2, 0, data, offset, entryMetadata.DataLength);
                ((FatDirectoryEntry)Parent).SetDirectoryEntryData(data);
            }
        }