Beispiel #1
0
        /// <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());
        }
Beispiel #2
0
 /// <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);
 }
Beispiel #3
0
        /// <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);
            }
        }
Beispiel #4
0
        /// <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);
        }
Beispiel #5
0
 public static void AddMapping(string aPath, PulsarFileSystem aFileSystem)
 {
     mFS = aFileSystem;
 }