From 46c0e8ffe16a4e87ec0bfd9bc7fa4d57d71883e4 Mon Sep 17 00:00:00 2001 From: Perfare Date: Fri, 28 May 2021 03:43:32 +0800 Subject: [PATCH] Improve stream file processing --- AssetStudio/AssetsManager.cs | 4 ++-- AssetStudio/BundleFile.cs | 1 + AssetStudio/StreamFile.cs | 1 + AssetStudio/WebFile.cs | 1 + AssetStudioGUI/Studio.cs | 7 ++++--- 5 files changed, 9 insertions(+), 5 deletions(-) diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index 40bda3d..2cc6ce4 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -162,7 +162,7 @@ namespace AssetStudio } else { - resourceFileReaders.Add(file.fileName, subReader); + resourceFileReaders[file.fileName] = subReader; //TODO } } } @@ -203,7 +203,7 @@ namespace AssetStudio LoadWebFile(dummyPath, fileReader); break; case FileType.ResourceFile: - resourceFileReaders.Add(file.fileName, fileReader); + resourceFileReaders[file.fileName] = fileReader; //TODO break; } } diff --git a/AssetStudio/BundleFile.cs b/AssetStudio/BundleFile.cs index c5385bb..704ae57 100644 --- a/AssetStudio/BundleFile.cs +++ b/AssetStudio/BundleFile.cs @@ -171,6 +171,7 @@ namespace AssetStudio var node = m_DirectoryInfo[i]; var file = new StreamFile(); fileList[i] = file; + file.path = node.path; file.fileName = Path.GetFileName(node.path); if (node.size >= int.MaxValue) { diff --git a/AssetStudio/StreamFile.cs b/AssetStudio/StreamFile.cs index 9726659..9e076be 100644 --- a/AssetStudio/StreamFile.cs +++ b/AssetStudio/StreamFile.cs @@ -4,6 +4,7 @@ namespace AssetStudio { public class StreamFile { + public string path; public string fileName; public Stream stream; } diff --git a/AssetStudio/WebFile.cs b/AssetStudio/WebFile.cs index 273f35c..26219d6 100644 --- a/AssetStudio/WebFile.cs +++ b/AssetStudio/WebFile.cs @@ -83,6 +83,7 @@ namespace AssetStudio { var data = dataList[i]; var file = new StreamFile(); + file.path = data.path; file.fileName = Path.GetFileName(data.path); reader.BaseStream.Position = data.dataOffset; file.stream = new MemoryStream(reader.ReadBytes(data.dataLength)); diff --git a/AssetStudioGUI/Studio.cs b/AssetStudioGUI/Studio.cs index c301d3d..90ae779 100644 --- a/AssetStudioGUI/Studio.cs +++ b/AssetStudioGUI/Studio.cs @@ -113,10 +113,11 @@ namespace AssetStudioGUI int extractedCount = 0; foreach (var file in fileList) { - var filePath = Path.Combine(extractPath, file.fileName); - if (!Directory.Exists(extractPath)) + var filePath = Path.Combine(extractPath, file.path); + var fileDirectory = Path.GetDirectoryName(filePath); + if (!Directory.Exists(fileDirectory)) { - Directory.CreateDirectory(extractPath); + Directory.CreateDirectory(fileDirectory); } if (!File.Exists(filePath)) {