Decompress() public static méthode

public static Decompress ( Stream instream, Stream outstream ) : long
instream Stream
outstream Stream
Résultat long
Exemple #1
0
        private void openButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Binary files (*.bin)|*.bin|All files (*.*)|*.*";
            if (openFileDialog.ShowDialog() != DialogResult.OK) return;

            long length = (new FileInfo(openFileDialog.FileName)).Length;
            if (length > saveLength_EUR)
            {
                MessageBox.Show("Invalid save file", "Error");
                return;
            }

            // Open a decompressed save file, for testing purpose
            if (length == saveLength_EUR)
            {
                Header = null;
                SaveData = File.ReadAllBytes(openFileDialog.FileName);
                enableButtons();
                return;
            }

            Header = new byte[headerLength_EUR];
            byte[] compressed = new byte[length - headerLength_EUR];
            using (FileStream fs = new FileStream(openFileDialog.FileName, FileMode.Open, FileAccess.Read))
            {
                using (BinaryReader br = new BinaryReader(fs))
                {
                    br.BaseStream.Seek(headerLength_EUR, SeekOrigin.Begin);
                    byte isLZ11 = br.ReadByte();
                    if (isLZ11 != 0x11)
                    {
                        MessageBox.Show("Invalid save file", "Error");
                        return;
                    }
                    br.BaseStream.Seek(0x00, SeekOrigin.Begin);
                    br.Read(Header, 0x0, headerLength_EUR);
                    br.Read(compressed, 0x0, (int)length - headerLength_EUR);
                }
            }

            // Decompress
            byte[] decompressed = null;
            LZ11 lz11 = new LZ11();
            using (MemoryStream inStream = new MemoryStream(compressed))
            {
                using (MemoryStream outStream = new MemoryStream())
                {
                    lz11.Decompress(inStream, compressed.Length, outStream);
                    if (outStream != null)
                        decompressed = outStream.ToArray();
                    else
                    {
                        MessageBox.Show("Invalid save file", "Error");
                        return;
                    }

                }
            }

            // Check file validity and save loading
            if (decompressed.Length != saveLength_EUR)
            {
                labelRegion.Text = "USA";
                MessageBox.Show("Invalid save file", "Error");
                return;
            }
            SaveData = decompressed;
            labelRegion.Text = "EUR";
            enableButtons();
        }
Exemple #2
0
        public void openButton_Click(object sender, EventArgs e)
        {
            OpenFileDialog openFileDialog = new OpenFileDialog();
            openFileDialog.Filter = "Binary files (*.bin)|*.bin|All files (*.*)|*.*";
            if (openFileDialog.ShowDialog() != DialogResult.OK) return;

            // Open a decompressed save file, for testing purpose
            if (new FileInfo(openFileDialog.FileName).Length == 0x51FB8)
            {
                Header = null;
                SaveData = File.ReadAllBytes(openFileDialog.FileName);
                enableButtons();
                return;
            }

            byte[] rawSave = File.ReadAllBytes(openFileDialog.FileName);
            if (rawSave[0x58] != 0x11)
            {
                MessageBox.Show("Invalid save file", "Error");
                return;
            }
            byte[] compressed = new byte[rawSave.Length - 0x58];
            Array.Copy(rawSave, 0x58, compressed, 0, rawSave.Length - 0x58);

            // Decompress
            byte[] decompressed = null;
            LZ11 lz11 = new LZ11();
            using (MemoryStream inStream = new MemoryStream(compressed))
            {
                using (MemoryStream outStream = new MemoryStream())
                {
                    lz11.Decompress(inStream, compressed.Length, outStream);
                    if (outStream != null)
                        decompressed = outStream.ToArray();
                         
                    else
                    {
                        MessageBox.Show("Invalid save file", "Decompress Error");
                        return;
                    }
                }
                //only for testing
                /*
                using (FileStream fs = new FileStream("dec2.bin", FileMode.Create, FileAccess.Write))
                {
                    using (BinaryWriter bw = new BinaryWriter(fs))
                    {
                        
                        bw.Write(decompressed);
                    }
                }
                 */
                
            }

            // Check file validity and save loading
            if (decompressed.Length != saveLength_EUR)
            {
                MessageBox.Show("Invalid save file", "Error");
                return;
            }

            // Check decompressed save file size
            /*
            string filesize = Convert.ToString(decompressed.Length);
            MessageBox.Show(filesize, "bytesize");
             */
             
            Header = new byte[0x58];
            Array.Copy(rawSave, 0, Header, 0, 0x58);
            SaveData = decompressed;
            enableButtons();
        }