Exemplo n.º 1
0
        public StfsArchive(Stream stream)
        {
            Stfs = new StfsFile(stream);

            Root = new DirectoryNode();
            Dictionary <int, DirectoryNode> Directories = new Dictionary <int, DirectoryNode>();

            Directories.Add(0xFFFF, Root);

            for (int i = 0; i < Stfs.Files.Count; i++)
            {
                StfsFile.FileDescriptor file   = Stfs.Files[i];
                DirectoryNode           parent = Directories[file.Parent];
                if ((file.Flags & 0x80) != 0)
                {
                    DirectoryNode directory = new DirectoryNode(file.Name);
                    parent.AddChild(directory);
                    Directories.Add(i, directory);
                }
                else
                {
                    parent.AddChild(new FileNode(file.Name, file.Size, new Substream(Stfs.Stream, Stfs.Stream.GetBlockOffset(file.Block), file.Size)));
                }
            }
        }
Exemplo n.º 2
0
 public BlockStream(StfsFile stfs, Stream stream)
 {
     Base     = stream;
     Stfs     = stfs;
     Position = 0;
 }
Exemplo n.º 3
0
 public StfsArchive()
 {
     Stfs = new StfsFile();
     Root = new DirectoryNode();
 }