При попытке получить определенные файлы из всех папок активов, почему он не находит все файлы, а только один?C#

Место общения программистов C#
Ответить
Anonymous
 При попытке получить определенные файлы из всех папок активов, почему он не находит все файлы, а только один?

Сообщение Anonymous »

Моя цель - после того, как все творения получают определенные файлы и удалили некоторые из них, оставляют только одну, потому что они дублируются.EditorApplication.delayCall += () =>
{
System.Threading.Tasks.Task.Delay(10000).ContinueWith(_ =>
{
UnityEditor.EditorApplication.delayCall += () =>
{
// Remove duplicate txt files first
DeleteDuplicatePositionFiles();

// Then build from final txt
BuildFromPositions(txtPath);
};
});
};
< /code>
Я использовал точку останова, и она приходит через 10 секунд, чтобы метод deleteduplicatepositionfiles (); < /p>
Но в методе deleteduplicatepositionfiles (); В этой строке < /p>
string[] allTxtFiles = Directory.GetFiles(Application.dataPath, "shapes_positions.txt", SearchOption.AllDirectories);
< /code>
oi См. Alltxtfiles Содержит только один файл.
Но в активах одно и то же содержимое файла и имя существуют в двух местах. alt = "txt file in shapeslices" src = "https://i.sstatic.net/jy6pnvqf.jpg"/>
и тот же файл в Assets> «Инструменты> Slicer
Slicer> sl SLICER src = "https://i.sstatic.net/a2cwndx8.jpg"/>
Метод, который должен с ним обрабатывать, и удалить один из файлов.
private void DeleteDuplicatePositionFiles()
{
string[] allTxtFiles = Directory.GetFiles(Application.dataPath, "shapes_positions.txt", SearchOption.AllDirectories);
string keepFile = Path.GetFullPath(Path.Combine(Application.dataPath, "Tools/Slicer/shapes_positions.txt"));

long keepSize = File.Exists(keepFile) ? new FileInfo(keepFile).Length : -1;

int deleted = 0;

foreach (string file in allTxtFiles)
{
string fullPath = Path.GetFullPath(file);
if (fullPath == keepFile)
continue;

try
{
long size = new FileInfo(fullPath).Length;
if (size == keepSize && keepSize != -1)
{
File.Delete(fullPath);
deleted++;
UnityEngine.Debug.Log($"Deleted duplicate: {fullPath}");
}
}
catch (System.Exception ex)
{
UnityEngine.Debug.LogWarning("Failed to delete: " + fullPath + "\n" + ex.Message);
}
}

if (deleted > 0)
UnityEngine.Debug.Log($Cleaned {deleted} duplicate shapes_positions.txt files.");
}
< /code>
Файлы, создающие одновременно. Так почему же он получает только один из них?>

Подробнее здесь: https://stackoverflow.com/questions/797 ... ot-finding
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»