/// <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); }
/// <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); }