我想实现一个功能,它将从一个目录中获取文件,将它们压缩为 .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);
}
}
最佳答案
如果 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);
}
}
关于c# - 如何自动更改新 .zip 文件的名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56037446/