Я хочу создать алгоритм, чтобы сгенерировать имя для нового файла, который я хочу добавить в главную директорию. Все файлы в этом каталоге должны иметь уникальное имя и начинаться с «myFile»Increment filename
Что вы думаете об этом алгоритме? Могу ли я его оптимизировать?
string startFileName="myFile.jpg";
string startDirectory="c:\MyPhotosWithSubFoldersAndWithFilesInMainDirectory";
bool fileWithThisNameExists = false;
string tempName = null;
do
{
tempName = startFileName +"_"+ counter++ + Path.GetExtension(startFileName);
foreach (var file in Directory.GetFiles(startDirectory)
{
if (Path.GetFileName(tempName) == Path.GetFileName(file))
{
fileWithThisNameExists = true;
}
}
if (fileWithThisNameExists) continue;
foreach (var directory in Directory.GetDirectories(startDirectory))
{
foreach (var file in Directory.GetFiles(directory))
{
if (Path.GetFileName(tempName) == Path.GetFileName(file))
{
fileWithThisNameExists = true;
}
}
}
} while (fileWithThisNameExists);
Для алгоритма я бы с GUID как Kangkan предложил. Но, глядя на ваш код, похоже, что вы пытаетесь сделать что-то, что может сделать Windows для вас. В Windows XP и более поздних версиях Windows можно переименовать несколько файлов одновременно через Explorer, выбрав файлы для переименования, а затем нажав клавишу F2. Просто введите новое имя и нажмите Enter. Все файлы будут переименованы, а затем в скобках будет увеличено число. – KeesDijk