public Stream FileOpen(string fileName) { var stream = _innerDataContext.FileOpen(fileName); if (stream == null) { return(null); } return(HdAsset.Read(stream).Stream); }
public void WriteBackTheSameReadStream() => Helpers.UseAsset("ps4archive.bin", stream => { Helpers.AssertStream(stream, x => { var asset = HdAsset.Read(stream); var outStream = new MemoryStream(); asset.Write(outStream); return(outStream); }); });
protected void OnExecute(CommandLineApplication app) { var prefix = Prefix ?? DefaultPrefix; foreach (var filePath in GetFiles(Input, Recursive, prefix)) { using (var stream = File.OpenRead(filePath)) { HdAsset asset; try { // Avoid to crash on files that are not a ReMIX asset asset = HdAsset.Read(stream); } catch { // Not a ReMIX asset continue; } var directoryName = Path.GetDirectoryName(filePath); Console.Write(filePath); foreach (var entry in asset.Entries) { var outDir = Path.GetFileNameWithoutExtension(filePath); var outFileName = Path.Combine(directoryName, $"{prefix}{outDir}", entry.Name); Directory.CreateDirectory(Path.GetDirectoryName(outFileName)); using (var outStream = File.Create(outFileName)) { entry.Stream.Position = 0; entry.Stream.CopyTo(outStream); } } } } }
protected void OnExecute(CommandLineApplication app) { foreach (var filePath in GetFiles(Input, Recursive, DefaultPrefix)) { HdAsset asset; using (var stream = File.OpenRead(filePath)) { try { // Avoid to crash on files that are not a ReMIX asset asset = HdAsset.Read(stream); } catch { // Not a ReMIX asset continue; } } using (var stream = File.Create(filePath)) asset.Stream.CopyTo(stream); } }
private static void UnpackFile(string filePath) { var directoryName = Path.GetDirectoryName(filePath); Console.Write($"{filePath}... "); using (var stream = File.OpenRead(filePath)) { HdAsset asset; try { // Avoids to throw a false positive to files that are not an HdAsset asset = HdAsset.Read(stream); } catch { Console.WriteLine("ERROR!"); return; } foreach (var entry in asset.Entries) { var outDir = Path.GetFileNameWithoutExtension(filePath); var outFileName = Path.Combine(directoryName, $"{Prefix}{outDir}", entry.Name); Directory.CreateDirectory(Path.GetDirectoryName(outFileName)); using (var outStream = File.Create(outFileName)) { entry.Stream.Position = 0; entry.Stream.CopyTo(outStream); } } } Console.WriteLine("Ok!"); }