private void ReadFiles() { base.Trace("[SymbianImageROFS] ReadFiles() - reading directory tree..."); using (SymbianStreamReaderLE reader = SymbianStreamReaderLE.New((Stream)base.Stream)) { reader.Seek(iHeader.InternalHeader.DirTreeOffset, SeekOrigin.Begin); TRofsDir rootDirectory = new TRofsDir(string.Empty, (uint)reader.Position, reader, this); base.Trace("[SymbianImageROFS] ReadFiles() - converting directory tree to full full paths..."); MakeFilesForDirectory(rootDirectory, string.Empty); } }
private void MakeFilesForDirectory(TRofsDir aDirectory, string aParentDirectoryName) { string name = aParentDirectoryName + @"\"; // Create files StringBuilder fullName = new StringBuilder(); foreach (TRofsEntry entry in aDirectory) { fullName.Length = 0; fullName.Append(name); fullName.Append(entry.Name); // SIContent file = SIContentFactoryROFS.New(this, fullName.ToString(), entry.FileSize, entry.FileAddress, entry.Uids); base.RegisterFile(file); } // Create files in any subdirs foreach (TRofsDir subdir in aDirectory.SubDirectories) { MakeFilesForDirectory(subdir, name + subdir.Name); } }