コード例 #1
0
ファイル: FatLfnDirectory.cs プロジェクト: riina/fat32lib.NET
        /// <summary>
        /// According to the FAT file system specification, leading and trailing
        /// spaces in the name are ignored by this method.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        /// <exception cref="IOException"></exception>
        public IFsDirectoryEntry AddDirectory(string name)
        {
            CheckWritable();
            CheckUniqueName(name);

            name = name.Trim();
            var sn   = MakeShortName(name, true);
            var real = Dir.CreateSub(fat);

            real.SetShortName(sn);
            var e = new FatLfnDirectoryEntry(this, real, name);

            try {
                Dir.AddEntries(e.CompactForm());
            }
            catch (IOException ex) {
                var cc = new ClusterChain(fat, real.GetStartCluster(), false);
                cc.SetChainLength(0);
                Dir.RemoveEntry(real);
                throw ex;
            }

            shortNameIndex.Add(sn, e);
            longNameIndex.Add(name.ToLowerInvariant(), e);

            GetDirectory(real);

            Flush();
            return(e);
        }
コード例 #2
0
ファイル: FatLfnDirectory.cs プロジェクト: riina/fat32lib.NET
        /// <summary>
        /// According to the FAT file system specification, leading and trailing
        /// spaces in the name are ignored by this method.
        /// </summary>
        /// <param name="name"></param>
        /// <returns></returns>
        /// <exception cref="IOException"></exception>
        public IFsDirectoryEntry AddFile(string name)
        {
            CheckWritable();
            CheckUniqueName(name);

            name = name.Trim();
            var sn = MakeShortName(name, false);

            var entry = new FatLfnDirectoryEntry(name, sn, this, false);

            Dir.AddEntries(entry.CompactForm());

            shortNameIndex.Add(sn, entry);
            longNameIndex.Add(name.ToLowerInvariant(), entry);

            GetFile(entry.RealEntry);

            Dir.SetDirty();
            return(entry);
        }