/// <summary> /// Gets all PulsarEntries contained in this PulsarDirectory /// </summary> public PulsarEntry[] GetEntries() { PulsarFSBlock curb = _StartBlock; List <PulsarEntry> d = new List <PulsarEntry>(); while (curb.NextBlock != 0) { int index = 0; curb = PulsarFSBlock.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 PulsarDirectory(part, a, PulsarFileSystem.CombineDir(_Path, Name))); } else if (sep == 2) { d.Add(new PulsarFile(part, a, PulsarFileSystem.CombineDir(_Path, Name))); } } } return(d.ToArray()); }
/// <summary> /// Permits to remove a PulsarDirectory by passing it /// </summary> /// <param name="PulsarDirectory">The PulsarDirectory to remove</param> private void RemoveDirectory(PulsarDirectory PulsarDirectory) { PulsarDirectory[] subdirs = PulsarDirectory.GetDirs(); for (int i = 0; i < subdirs.Length; i++) { PulsarDirectory.RemoveDirectory(subdirs[i]); } PulsarFile[] subfiles = PulsarDirectory.GetFiles(); for (int i = 0; i < subdirs.Length; i++) { PulsarDirectory.RemoveFile(subfiles[i].Name); } PulsarFileSystem.ClearBlocks(PulsarDirectory.StartBlock); DeleteBlock(PulsarDirectory.StartBlock); }
/// <summary> /// Permits to remove a PulsarFile by passing it's name /// </summary> /// <param name="Name">The PulsarFile's name to remove</param> public void RemoveFile(String Name) { PulsarFile[] 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) { PulsarFileSystem.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) { PulsarFileSystem.ClearBlocks(_StartBlock); _StartBlock.NextBlock = 0; PulsarFSBlock.Write(PulsarFileSystem.mFS.Partition, _StartBlock); } int index = 0; PulsarFSBlock curb = PulsarFSBlock.GetFreeBlock(PulsarFileSystem.mFS.Partition); _StartBlock.NextBlock = curb.BlockNumber; PulsarFSBlock.Write(part, _StartBlock); do { Byte[] arr = new Byte[PulsarFSBlock.MaxBlockContentSize]; index = Utils.CopyByteToByte(Data, index, arr, 0, arr.Length); curb.Used = true; curb.Content = arr; if (index != Data.Length) { PulsarFSBlock b = PulsarFSBlock.GetFreeBlock(PulsarFileSystem.mFS.Partition); curb.NextBlock = b.BlockNumber; curb.ContentSize = (uint)arr.Length; PulsarFSBlock.Write(PulsarFileSystem.mFS.Partition, curb); curb = b; } else { curb.ContentSize = (uint)(Data.Length % arr.Length); PulsarFSBlock.Write(PulsarFileSystem.mFS.Partition, curb); } }while (index != Data.Length); EditEntryInfo(EntryInfoPosition.DateTimeModified, Environment.DateTime.Now.TimeStamp); EditEntryInfo(EntryInfoPosition.DateTimeLastAccess, Environment.DateTime.Now.TimeStamp); }
public static void AddMapping(string aPath, PulsarFileSystem aFileSystem) { mFS = aFileSystem; }