Improve stream file processing

This commit is contained in:
Perfare 2021-05-28 03:43:32 +08:00
parent d14c232015
commit 46c0e8ffe1
5 changed files with 9 additions and 5 deletions

View File

@ -162,7 +162,7 @@ namespace AssetStudio
} }
else else
{ {
resourceFileReaders.Add(file.fileName, subReader); resourceFileReaders[file.fileName] = subReader; //TODO
} }
} }
} }
@ -203,7 +203,7 @@ namespace AssetStudio
LoadWebFile(dummyPath, fileReader); LoadWebFile(dummyPath, fileReader);
break; break;
case FileType.ResourceFile: case FileType.ResourceFile:
resourceFileReaders.Add(file.fileName, fileReader); resourceFileReaders[file.fileName] = fileReader; //TODO
break; break;
} }
} }

View File

@ -171,6 +171,7 @@ namespace AssetStudio
var node = m_DirectoryInfo[i]; var node = m_DirectoryInfo[i];
var file = new StreamFile(); var file = new StreamFile();
fileList[i] = file; fileList[i] = file;
file.path = node.path;
file.fileName = Path.GetFileName(node.path); file.fileName = Path.GetFileName(node.path);
if (node.size >= int.MaxValue) if (node.size >= int.MaxValue)
{ {

View File

@ -4,6 +4,7 @@ namespace AssetStudio
{ {
public class StreamFile public class StreamFile
{ {
public string path;
public string fileName; public string fileName;
public Stream stream; public Stream stream;
} }

View File

@ -83,6 +83,7 @@ namespace AssetStudio
{ {
var data = dataList[i]; var data = dataList[i];
var file = new StreamFile(); var file = new StreamFile();
file.path = data.path;
file.fileName = Path.GetFileName(data.path); file.fileName = Path.GetFileName(data.path);
reader.BaseStream.Position = data.dataOffset; reader.BaseStream.Position = data.dataOffset;
file.stream = new MemoryStream(reader.ReadBytes(data.dataLength)); file.stream = new MemoryStream(reader.ReadBytes(data.dataLength));

View File

@ -113,10 +113,11 @@ namespace AssetStudioGUI
int extractedCount = 0; int extractedCount = 0;
foreach (var file in fileList) foreach (var file in fileList)
{ {
var filePath = Path.Combine(extractPath, file.fileName); var filePath = Path.Combine(extractPath, file.path);
if (!Directory.Exists(extractPath)) var fileDirectory = Path.GetDirectoryName(filePath);
if (!Directory.Exists(fileDirectory))
{ {
Directory.CreateDirectory(extractPath); Directory.CreateDirectory(fileDirectory);
} }
if (!File.Exists(filePath)) if (!File.Exists(filePath))
{ {