我想实现一个功能,该功能将从一个目录中获取文件,将其压缩为.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);
}
}
答案 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);
}
}