Не очень, но у меня это было какое-то время:
private string getNextFileName(string fileName)
{
string extension = Path.GetExtension(fileName);
int i = 0;
while (File.Exists(fileName))
{
if (i == 0)
fileName = fileName.Replace(extension, "(" + ++i + ")" + extension);
else
fileName = fileName.Replace("(" + i + ")" + extension, "(" + ++i + ")" + extension);
}
return fileName;
}
Предполагая, что файлы уже существуют:
вызов getNextFileName ("File.txt") вернет «Файл (3)». txt ".
Не самый эффективный, поскольку он не использует двоичный поиск, но должен быть в порядке для небольшого количества файлов. И это не учитывает состояние гонки ...
При использовании отладчика, когда вы «входите» в любой метод, он пытается показать вам источник этого метода. Если он не может найти источник, он все еще может выполнить шаг, но не может показать вам соответствующий источник. Если он не может перейти, он все равно может выполнить код.
Ваше исключение «FileNotFound» говорит вам, что он не может найти файл, который пытается открыть ваш код (или, возможно, папку, в которой вы пытаетесь создать файл). Имейте в виду, что любое относительное расположение файла зависит от знания «каталога по умолчанию», с которого начинается процесс, выполняющий ваш код. Вы можете решить эту проблему, гарантируя, что у вас есть только абсолютные местоположения файлов (то есть, те, которые начинаются с корневого каталога на диске), хотя это может быть проблемой для написания программ для запуска на разных машинах. Для упражнения во время обучения, я думаю, это хорошо.