예제 #1
0
 public AllocationTableStream(Stream data, AllocationTable table, int blockSize, int initialBlock, long length)
 {
     Data          = data;
     BlockSize     = blockSize;
     Length        = length;
     Iterator      = new AllocationTableIterator(table, initialBlock);
     Data.Position = Iterator.PhysicalBlock * BlockSize;
 }
예제 #2
0
 public AllocationTableIterator(AllocationTable table, int initialBlock)
 {
     Fat = table;
     if (!BeginIteration(initialBlock))
     {
         throw new ArgumentException($"Attempted to start FAT iteration from an invalid block. ({initialBlock}");
     }
 }
예제 #3
0
        public SaveFs(Stream storage, Stream allocationTable, SaveHeader header)
        {
            StreamSource    = new SharedStreamSource(storage);
            AllocationTable = new AllocationTable(allocationTable);
            Header          = header;

            ReadFileInfo();
            var dictionary = new Dictionary <string, FileEntry>();

            foreach (FileEntry entry in Files)
            {
                dictionary[entry.FullPath] = entry;
            }

            FileDictionary = dictionary;
        }