/// <summary> /// Gets all NoobEntries contained in this NoobDirectory /// </summary> public NoobEntry[] GetEntries() { NoobFSBlock curb = _StartBlock; List <NoobEntry> d = new List <NoobEntry>(); while (curb.NextBlock != 0) { int index = 0; curb = NoobFSBlock.Read(_StartBlock.Partition, _StartBlock.NextBlock); while (index < curb.ContentSize) { ulong a = BitConverter.ToUInt64(curb.Content, index); index += 8; uint sep = BitConverter.ToUInt32(curb.Content, index); index += 4; if (sep == 1) { d.Add(new NoobDirectory(part, a, NoobFileSystem.CombineDir(_Path, Name))); } else if (sep == 2) { d.Add(new NoobFile(part, a, NoobFileSystem.CombineDir(_Path, Name))); } } } return(d.ToArray()); }
/// <summary> /// Permits to remove a NoobDirectory by passing it /// </summary> /// <param name="noobDirectory">The NoobDirectory to remove</param> private void RemoveDirectory(NoobDirectory noobDirectory) { NoobDirectory[] subdirs = noobDirectory.GetDirs(); for (int i = 0; i < subdirs.Length; i++) { noobDirectory.RemoveDirectory(subdirs[i]); } NoobFile[] subfiles = noobDirectory.GetFiles(); for (int i = 0; i < subdirs.Length; i++) { noobDirectory.RemoveFile(subfiles[i].Name); } NoobFileSystem.ClearBlocks(noobDirectory.StartBlock); DeleteBlock(noobDirectory.StartBlock); }
/// <summary> /// Permits to remove a NoobFile by passing it's name /// </summary> /// <param name="Name">The NoobFile's name to remove</param> public void RemoveFile(String Name) { NoobFile[] files = GetFiles(); bool found = false; int index = 0; for (int i = 0; i < files.Length; i++) { if (files[i].Name == Name) { index = i; found = true; break; } } if (found) { NoobFileSystem.ClearBlocks(files[index].StartBlock); DeleteBlock(files[index].StartBlock); } }
/// <summary> /// Writes all the specified Bytes into the file /// </summary> /// <param name="Data">The array Byte to write into file</param> public void WriteAllBytes(Byte[] Data) { if (_StartBlock.NextBlock != 0) { NoobFileSystem.ClearBlocks(_StartBlock); _StartBlock.NextBlock = 0; NoobFSBlock.Write(NoobFileSystem.mFS.Partition, _StartBlock); } int index = 0; NoobFSBlock curb = NoobFSBlock.GetFreeBlock(NoobFileSystem.mFS.Partition); _StartBlock.NextBlock = curb.BlockNumber; NoobFSBlock.Write(part, _StartBlock); do { Byte[] arr = new Byte[NoobFSBlock.MaxBlockContentSize]; index = Utils.CopyByteToByte(Data, index, arr, 0, arr.Length); curb.Used = true; curb.Content = arr; if (index != Data.Length) { NoobFSBlock b = NoobFSBlock.GetFreeBlock(NoobFileSystem.mFS.Partition); curb.NextBlock = b.BlockNumber; curb.ContentSize = (uint)arr.Length; NoobFSBlock.Write(NoobFileSystem.mFS.Partition, curb); curb = b; } else { curb.ContentSize = (uint)(Data.Length % arr.Length); NoobFSBlock.Write(NoobFileSystem.mFS.Partition, curb); } }while (index != Data.Length); EditEntryInfo(EntryInfoPosition.DateTimeModified, Environment.DateTime.Now.TimeStamp); EditEntryInfo(EntryInfoPosition.DateTimeLastAccess, Environment.DateTime.Now.TimeStamp); }
/// <summary> /// Simply sets mFS /// </summary> /// <param name="aPath">The path to assign (Still not working)</param> /// <param name="aFileSystem">The Filesystem to assign</param> public static void AddMapping(string aPath, NoobFileSystem aFileSystem) { mFS = aFileSystem; }