コード例 #1
0
ファイル: FatLfnDirectory.cs プロジェクト: riina/fat32lib.NET
        /// <summary>
        /// Links the specified entry to this directory, updating the entrie's
        /// short name.
        /// </summary>
        /// <param name="entry">the entry to be linked (added) to this directory</param>
        /// <seealso cref="UnlinkEntry(FatLfnDirectoryEntry)"/>
        internal void LinkEntry(FatLfnDirectoryEntry entry)
        {
            CheckUniqueName(entry.GetName());
            ShortName name;

            name = dbg.Generate83BufferNew(entry.GetName());
            entry.RealEntry.SetShortName(name);

            longNameIndex.Add(entry.GetName().ToLowerInvariant(), entry);
            shortNameIndex.Add(entry.RealEntry.GetShortName(), entry);

            UpdateLfn();
        }
コード例 #2
0
ファイル: FatLfnDirectory.cs プロジェクト: riina/fat32lib.NET
        /// <summary>
        /// Unlinks the specified entry from this directory without actually
        /// deleting it.
        /// </summary>
        /// <param name="entry">the entry to be unlinked</param>
        /// <seealso cref="LinkEntry(FatLfnDirectoryEntry)"/>
        internal void UnlinkEntry(FatLfnDirectoryEntry entry)
        {
            var sn = entry.RealEntry.GetShortName();

            if (sn.Equals(ShortName.Dot) || sn.Equals(ShortName.DotDot))
            {
                throw
                    new ArgumentException(
                        "the dot entries can not be removed");
            }

            var lowerName = entry.GetName().ToLowerInvariant();

            if (!longNameIndex.ContainsKey(lowerName))
            {
                throw new Exception();
            }
            longNameIndex.Remove(lowerName);

            if (!shortNameIndex.ContainsKey(sn))
            {
                throw new Exception();
            }
            shortNameIndex.Remove(sn);

            if (entry.IsFile())
            {
                entryToFile.Remove(entry.RealEntry);
            }
            else
            {
                entryToDirectory.Remove(entry.RealEntry);
            }
        }