由于运行异步代码,获取文件已存在错误

时间:2018-10-24 15:22:12

标签: c# file asynchronous

下面的代码异步运行,使用相同的名称创建了2个zip文件,并尝试复制目标位置时出现错误,

  

文件'C:\ Temp \ test_20181024032123496.Zip'已经存在。

如何跳过这种情况?谢谢!

private static async Task<bool> GenerateZipFile(FileSystemInfo file1, string zipFilePath)
{
    try
    {
        using (var zip = ZipFile.Open($"{zipFilePath}\\test_{DateTime.UtcNow:yyyyMMddHHmmssfff}.Zip", ZipArchiveMode.Create))
        {
            zip.CreateEntryFromFile(file1.FullName, file1.Name, CompressionLevel.Optimal);
        }
    }
    catch (Exception ex)
    {
        Console.Write(ex);
    }
}

1 个答案:

答案 0 :(得分:1)

好吧,所以我不确定您所创建的zip文件或要添加到zip文件中的文件是否存在问题,因此我要添加代码来检查它们是否存在< / p>

private static async Task<bool> GenerateZipFile(FileSystemInfo file1, string zipFilePath)
{
    try
    {
        string newZipFilePath = $"{zipFilePath}\\test_{DateTime.UtcNow:yyyyMMddHHmmssfff}.Zip"
        if (!System.IO.File.Exists(newZipFilePath))
        {
            using (var zip = ZipFile.Open(newZipFilePath, ZipArchiveMode.Create))
            {
                if(System.IO.File.Exists(file1.FullName))
                {
                    zip.CreateEntryFromFile(file1.FullName, file1.Name, CompressionLevel.Optimal);
                }
            }
        }
    }
    catch (Exception ex)
    {
        Console.Write(ex);
    }
}

这应该可行,但是您还应该检查实际需要的是哪一个,并且只能使用那个