Ejemplo n.º 1
0
        static void Extract(FileStream file, String destination, Dictionary <uint, string> filenameHashDict = null)
        {
            System.IO.Directory.CreateDirectory(destination);

            uint magic     = file.ReadUInt32();
            uint filecount = file.ReadUInt32();

            var FileInfos = new S2ARHeaderFileInfo[filecount];

            for (int i = 0; i < filecount; ++i)
            {
                FileInfos[i]          = new S2ARHeaderFileInfo();
                FileInfos[i].Hash     = file.ReadUInt32();
                FileInfos[i].Filesize = file.ReadUInt32();
            }

            for (int i = 0; i < filecount; ++i)
            {
                string filename;
                if (filenameHashDict != null && filenameHashDict.ContainsKey(FileInfos[i].Hash))
                {
                    filename = System.IO.Path.Combine(destination, filenameHashDict[FileInfos[i].Hash]);
                }
                else
                {
                    filename = System.IO.Path.Combine(destination, i.ToString("D4") + Util.GuessFileExtension(file));
                }
                FileStream newFile = new FileStream(filename, FileMode.Create);
                StreamUtils.CopyStream(file, newFile, (int)FileInfos[i].Filesize);
                newFile.Close();
            }

            return;
        }
Ejemplo n.º 2
0
        static void Extract( FileStream file, String destination, Dictionary<uint, string> filenameHashDict = null )
        {
            System.IO.Directory.CreateDirectory( destination );

            uint magic = file.ReadUInt32();
            uint filecount = file.ReadUInt32();

            var FileInfos = new S2ARHeaderFileInfo[filecount];
            for ( int i = 0; i < filecount; ++i ) {
                FileInfos[i] = new S2ARHeaderFileInfo();
                FileInfos[i].Hash = file.ReadUInt32();
                FileInfos[i].Filesize = file.ReadUInt32();
            }

            for ( int i = 0; i < filecount; ++i ) {
                string filename;
                if ( filenameHashDict != null && filenameHashDict.ContainsKey( FileInfos[i].Hash ) ) {
                    filename = System.IO.Path.Combine( destination, filenameHashDict[FileInfos[i].Hash] );
                } else {
                    filename = System.IO.Path.Combine( destination, i.ToString( "D4" ) + Util.GuessFileExtension( file ) );
                }
                FileStream newFile = new FileStream( filename, FileMode.Create );
                Util.CopyStream( file, newFile, (int)FileInfos[i].Filesize );
                newFile.Close();
            }

            return;
        }