Пример #1
0
        private void OnRenameClick(object sender, RoutedEventArgs e)
        {
            try
            {
                OpenFileDialog dlg = new OpenFileDialog {
                    Filter = "Scenes (*.scn, *.bin)|*.scn;*.bin", Multiselect = true
                };
                if (dlg.ShowDialog() != true)
                {
                    return;
                }

                ConcurrentDictionary <int, Tuple <int, string> > dic2 = new ConcurrentDictionary <int, Tuple <int, string> >();

                Parallel.ForEach(dlg.FileNames, filePath =>
                {
                    using (FileStream input = File.OpenRead(filePath))
                    {
                        BattleBinFileReader er = new BattleBinFileReader(input);
                        er.ReadHeader();
                        er.ReadDescriptorHeader();

                        IsoTableEntryInfo info = IsoTableEntryInfo.TryParse(filePath);
                        string fileName        = er.ReadFileName();
                        dic2.TryAdd(info.Index, Tuple.Create(info.DefectiveIndex, fileName));

                        Log.Message(dic2[info.Index].Item2);
                    }
                });

                using (FileStream fs = File.Create(@"W:\\Indices.bin"))
                {
                    using (Stream input = File.OpenRead(@"C:\Git\C#\Spira\Spira.ISO\SLPS_250.88\AdditionalFileInformation.bin"))
                        input.CopyTo(fs);

                    using (BinaryWriter bw = new BinaryWriter(fs))
                    {
                        foreach (KeyValuePair <int, Tuple <int, string> > pair in dic2)
                        {
                            bw.Write(pair.Key);
                            bw.Write(pair.Value.Item1);
                            bw.Write((int)(IsoAdditionalInfo.PS2KnownName | IsoAdditionalInfo.PS2KnownSignature));
                            bw.Write((int)FFXFileSignatures.Scn);
                            bw.Write(pair.Value.Item2);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
Пример #2
0
        private void SafeExtractInfo(IsoFileCommander fileCommander, IsoTableEntryInfo info, Action <long> progressIncr)
        {
            try
            {
                if (info.CompressedSize < 1)
                {
                    return;
                }

                fileCommander.ExtractFile(info, Path.Combine(@"W:\FFX", info.GetRelativePath()));
            }
            catch (Exception ex)
            {
                Log.Error(ex, "Failed to extract file '{0}'", info.GetFileName());
            }
            finally
            {
                progressIncr(1);
            }
        }