Запретить повторное переименование - C#
Формулировка задачи:
Делаю бекап всех файлов в папке с расширением .txt .doc через File.Move. Если делаю так, то при повторном бекапе переименовывает уже переименованные (файлы бекап которых уже создан). Как запретить повторное переименование, а сделать чтобы пропускал файлы бэкапа и делал бекап новых файлов ?
Если делаю так (под 4.0), то если есть в папке хоть 1 файл бекапа, то выкидывает ошибку, что невозможно создать. Код не мой. В чем отличие между ними ?
public void FileBack(string FileName)
{
try
{
File.Move(FileName, FileName + ".backup");
}
catch (Exception)
{
}
}
public void BackDirect(string patch)
{
List<string> List = new List<string>{
".txt", ".doc"
};
string[] Files = Directory.GetFiles(patch);
string[] Direct = Directory.GetDirectories(patch);
for (int i = 0; i < Files.Length; i++)
{
string extension = Path.GetExtension(Files[i]);
if (List.Contains(extension))
{
FileBack(Files[i]);
}
}
for (int i = 0; i < Direct.Length; i++)
{
BackDirect(Direct[i]);
}
}public void FileBack(string FileName)
{
File.Move(FileName, FileName + ".backup");
}
public void BackDirect(string patch)
{
var BackFileName = new[]
{
".txt", ".doc"
};
string[] Files = Directory.GetFiles(patch);
string[] Direct = Directory.GetDirectories(patch);
for (int i = 0; i < Files.Length; i++)
{
string extension = Path.GetExtension(Files[i]);
if (BackFileName.Contains(extension))
{
FileBack(Files[i]);
}
}
for (int i = 0; i < Direct.Length; i++)
{
BackDirect(Direct[i]);
}Решение задачи: «Запретить повторное переименование»
textual
Листинг программы
public static void FileBack(string filename)
{
try
{
File.Move(filename, filename + ".backup");
}
catch (Exception)
{
}
}
public static void BackDirect(string path)
{
string[] extensions = new string[] { ".txt", ".doc" };
string[] files = Directory.GetFiles(path);
foreach (string file in files)
{
if (Array.IndexOf<string>(extensions, Path.GetExtension(file).ToLower()) >= 0)
{
FileBack(file);
}
}
}