From 261a267c33822bfe2d9ad99e05248d6e47e4f31e Mon Sep 17 00:00:00 2001 From: VaDiM Date: Wed, 19 Aug 2026 10:07:07 +0300 Subject: [PATCH] Improve search for external files --- AssetStudio/AssetsManager.cs | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/AssetStudio/AssetsManager.cs b/AssetStudio/AssetsManager.cs index f11e092..52fd8c4 100644 --- a/AssetStudio/AssetsManager.cs +++ b/AssetStudio/AssetsManager.cs @@ -222,6 +222,8 @@ namespace AssetStudio if (fromZip) return true; + DirectoryInfo dirInfo = null; + FileInfo[] fileInfoArray = null; foreach (var sharedFile in assetsFile.m_Externals) { var sharedFileName = sharedFile.fileName; @@ -231,15 +233,20 @@ namespace AssetStudio var sharedFilePath = Path.Combine(dirName, sharedFileName); if (!noexistFiles.Contains(sharedFilePath)) { - if (!File.Exists(sharedFilePath)) + var isFileExist = File.Exists(sharedFilePath); + if (!isFileExist) { - var findFiles = Directory.GetFiles(dirName, sharedFileName, SearchOption.AllDirectories); - if (findFiles.Length > 0) + dirInfo = dirInfo ?? new DirectoryInfo(dirName); + fileInfoArray = fileInfoArray ?? dirInfo.GetFiles("*.*", SearchOption.AllDirectories); + + var fileInfo = fileInfoArray.FirstOrDefault(x => x.Name == sharedFileName); + if (fileInfo != null) { - sharedFilePath = findFiles[0]; + sharedFilePath = fileInfo.FullName; + isFileExist = true; } } - if (File.Exists(sharedFilePath)) + if (isFileExist) { importFiles.Add(sharedFilePath); importFilesHash.Add(sharedFileName);