如何自动更改一个新的.zip文件的名称?

时间:2019-05-08 09:22:48

标签: c# automation zip

我想实现一个功能,该功能将从一个目录中获取文件,将其压缩为.zip文件,然后将存档文件置于另一个目录中。问题是,如果我多次调用此函数,则必须在代码中手动定义一个新的.zip文件的名称,因此它必须始终是唯一的。否则,我会收到一个异常“ System.IO.IOException:'目标文件已存在。' 我该怎么做,以便每个新.zip的名称都会自动生成?(例如new_zip_1,new_zip_2等)

我使用允许在选定目录中创建.zip文件的功能:

ZipFile.CreateFromDirectory(startPath,zipPath);

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

        ZipFile.CreateFromDirectory(startPath, zipPath);
    }
}

1 个答案:

答案 0 :(得分:2)

如果不必一定是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);
    }
}