Как автоматически изменить имя нового файла .zip? - PullRequest
3 голосов
/ 08 мая 2019

Я хочу реализовать функцию, которая будет брать файлы из одного каталога, сжимать их в .zip и помещать этот архив в другой каталог.Проблема заключается в том, что если я вызываю эту функцию более одного раза, мне нужно вручную определить имя нового файла .zip в коде, чтобы оно всегда было уникальным.В противном случае я получаю исключение "System.IO.IOException: 'Файл назначения уже существует.'Как я могу сделать так, чтобы имя для каждого нового .zip генерировалось автоматически? (Например, new_zip_1, new_zip_2 и т. Д.)

ZipFile.CreateFromDirectory (startPath, zipPath);

class ZipController
{
    public void Zip()
    {
        string startPath = @"D:\Start\ToZip";
        string zipPath = @"D:\NewZip";

        ZipFile.CreateFromDirectory(startPath, zipPath);
    }
}

1 Ответ

2 голосов
/ 08 мая 2019

Если в имени ZIP не должно быть приращения, то я бы использовал дату и время. Это меньше кода, и гораздо больше похоже на то, чтобы дважды получить одно и то же имя файла.

Чтобы получить дату и время в удобном для файла формате:

DateTime.Now.ToString("yyyy-mm-dd_hh-mm-ss")

Итак, ваш код может выглядеть так:

class ZipController
{
    public void Zip()
    {
        string startPath = @"D:\Start\ToZip";
        string dateTime = DateTime.Now.ToString("yyyy-mm-dd_hh-mm-ss");
        string zipPath = @"D:\NewZip\new_zip_" + dateTime + ".zip";

        ZipFile.CreateFromDirectory(startPath, zipPath);
    }
}
...