Member 13142768 Ответов: 1

Как переименовать файл, если он уже существует в папке


я использую эту функцию в таймере
каждый тик он будет копировать файлы в целевой путь но этим он перезаписывает существующие файлы так что кто нибудь может мне помочь

Что я уже пробовал:

<pre> public static void Copy(string sourceDirectory, string targetDirectory)
    {
        DirectoryInfo diSource = new DirectoryInfo(sourceDirectory);
        DirectoryInfo diTarget = new DirectoryInfo(targetDirectory);

        CopyAll(diSource, diTarget);
    }

    public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
    {
        Directory.CreateDirectory(target.FullName);

        // Copy each file into the new directory.
        foreach (FileInfo fi in source.GetFiles())
        {
            Console.WriteLine(@"Copying {0}\{1}", target.FullName, fi.Name);
            fi.CopyTo(Path.Combine(target.FullName, fi.Name), true);
        }

        // Copy each subdirectory using recursion.
        foreach (DirectoryInfo diSourceSubDir in source.GetDirectories())
        {
            DirectoryInfo nextTargetSubDir =
                target.CreateSubdirectory(diSourceSubDir.Name);
            CopyAll(diSourceSubDir, nextTargetSubDir);
        }
    }

    public static void Main()
    {
        string sourceDirectory = @"F:\\payload_Data\\File_Splitted_1";
        string targetDirectory = @"c:\targetDirectory";

        Copy(sourceDirectory, targetDirectory);
    }

    // Output will vary based on the contents of the source directory.
}

[no name]

Поэтому проверьте, существует ли файл, и предоставьте альтернативное имя файла, если оно существует. Или переименуйте существующий файл, если вам нужно его сохранить.

Member 13142768

ya после одного тика таймера он должен скопировать те же файлы, так что одно и то же имя файла будет их.

1 Ответов

Рейтинг:
1

OriginalGriff

Это не сложно:

if (File.Exists(originalPath))
    {
    File.Move(originalPath, newPath);
    }


Member 13142768

но это непрерывный процесс поэтому каждый раз как мы можем дать новый путь

OriginalGriff

Это будет зависеть от вас и от того, как вы хотите назвать файл, который собираетесь заменить!

- Я? Я бы, наверное, пометил их датой и временем: префикс типа "20170503143718" означает, что "резервные копии" остаются в хронологическом порядке, но у вас может быть схема в голове. Мы не знаем, чего ты хочешь!

Maciej Los

5 буксировочных раз: 1) за ответ и 2) за комментарий ;)