【问题标题】:How to change the name of a new .zip file automatically?如何自动更改新 .zip 文件的名称?
【发布时间】:2019-05-08 09:22:48
【问题描述】:

我想实现一个函数,它将从一个目录中获取文件,将它们压缩为 .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.如果您不是同时创建文件,您可以在名称中包含日期和时间(例如 zip_20190508_123702 - 格式 zip_yyyyMMdd_HHmmss)。 2.如果您需要顺序编号,请看这里:codereview.stackexchange.com/a/32327/128213

标签: c# automation zip


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-03
    • 2017-12-08
    • 2017-05-29
    • 2018-04-03
    • 2016-03-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多