using System; using OpenRA.FileFormats; using System.IO; namespace FileExtractor { public class FileExtractor { int Length = 256; public FileExtractor (string[] args) { if (args.Length != 2) { Console.WriteLine("usage: FileExtractor mod[,mod]* filename"); return; } var mods = args[0].Split(','); var manifest = new Manifest(mods); foreach (var folder in manifest.Folders) FileSystem.Mount(folder); foreach (var pkg in manifest.Packages) FileSystem.Mount(pkg); try { var readStream = FileSystem.Open(args[1]); var writeStream = new FileStream(args[1], FileMode.OpenOrCreate, FileAccess.Write); WriteOutFile(readStream, writeStream); } catch (FileNotFoundException) { Console.WriteLine(String.Format("No Such File {0}", args[1])); } } void WriteOutFile (Stream readStream, Stream writeStream) { Byte[] buffer = new Byte[Length]; int bytesRead = readStream.Read(buffer,0,Length); while( bytesRead > 0 ) { writeStream.Write(buffer,0,bytesRead); bytesRead = readStream.Read(buffer,0,Length); } readStream.Close(); writeStream.Close(); } } }