public static void DumpTAHEntries(Stream source) { TAHFile tah = new TAHFile(source); try { tah.LoadEntries(); } catch (Exception ex) { Console.WriteLine("Error: " + ex); return; } foreach (string file in tah.Files.Files) { if (Path.GetExtension(file) == ".tso") { Console.WriteLine(file); } } foreach (TAHEntry ent in tah.EntrySet.Entries) { if (Path.GetExtension(ent.FileName) == ".tso") { byte[] data = TAHUtil.ReadEntryData(tah.Reader, ent); BinaryWriter writer = new BinaryWriter(File.Create(ent.FileName), System.Text.Encoding.Default); writer.Write(data); writer.Close(); } } }
// TAHからファイルを読み取る. private byte[] getTahFile(string file) { TDCGExplorer.ArcsDatabase arcDB = TDCGExplorer.TDCGExplorer.ArcsDB; string filename = file.ToLower(); byte[] filedata = null; List <ArcsTahFilesEntry> tahs = arcDB.GetTahFilesEntry(TDCGExplorer.TAHUtil.CalcHash(filename)); foreach (ArcsTahFilesEntry tahfile in tahs) { if (tahfile.path.ToLower() == filename) { ArcsTahEntry arcs = arcDB.GetTah(tahfile.tahid); using (Stream file_stream = File.OpenRead(Path.Combine(TDCGExplorer.TDCGExplorer.SystemDB.arcs_path, arcs.path))) { TAHFile tah = new TAHFile(file_stream); try { tah.LoadEntries(); foreach (TAHEntry ent in tah.EntrySet.Entries) { if (ent.FileName != null && ent.FileName.ToLower() == filename) { filedata = TAHUtil.ReadEntryData(tah.Reader, ent); break; } } } catch (Exception) { } } break; } } return(filedata); }