53 lines
1.1 KiB
C#
53 lines
1.1 KiB
C#
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);
|
|
FileSystem.LoadFromManifest( manifest );
|
|
|
|
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();
|
|
}
|
|
}
|
|
}
|
|
|