Mój kod C# generuje kilka plików tekstowych na podstawie danych wejściowych i zapisanych w folderze. Zakładam również, że nazwa pliku tekstowego będzie taka sama jak wejście. (Wejście zawiera tylko litery) Jeśli dwa pliki mają taką samą nazwę, to po prostu zastępują poprzedni plik. Ale chcę zachować oba pliki.Automatycznie zmieniaj nazwę pliku, jeśli już istnieje w systemie Windows
Nie chcę dodawać bieżącej daty ani numeru losowego do nazwy drugiego pliku. Zamiast tego chcę zrobić to w taki sam sposób, jak robi to Windows. Jeśli nazwa pliku fisrt to AAA.txt, wówczas nazwa drugiego pliku to AAA (2) .txt, trzecią nazwą pliku będzie AAA (3) .txt ..... N-ta nazwa pliku będzie AAA (N) .txt .
string[] allFiles = Directory.GetFiles(folderPath).Select(filename => Path.GetFileNameWithoutExtension(filename)).ToArray();
foreach (var item in allFiles)
{
//newFileName is the txt file which is going to be saved in the provided folder
if (newFileName.Equals(item, StringComparison.InvariantCultureIgnoreCase))
{
// What to do here ?
}
}
Rozszerzenie plików byłoby błędne, np. ** C: \ plik.txt ** stałoby się ** C: \ plik.txt (1) ** "itd. – flindeberg
@flindeberg dobry połów. Wierzę, że poprawiłem to błąd: – cadrell0
Dla przyszłego ref. mały haczyk, aby być świadomym: jeśli sprawdzany plik ma nazwę 'some name (1) some more text.txt', a plik już istnieje, jeśli zostanie poproszony o zachowanie obu plików Windows zmieni nazwę pliku 'some name (2) some more text.txt', a nie' some name (1) trochę więcej text (1) .txt' jak powyższy kod mógłby zrobić. –