首页 > 解决方案 > 由于代码运行异步,获取文件已存在错误

问题描述

如下代码运行异步,使用相同名称创建了 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);
    }
}

标签: c#fileasynchronous

解决方案


好的,所以我不确定您创建的 zip 文件或添加到 zip 文件中的文件是否有问题,所以我正在添加检查它们是否存在的代码

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);
    }
}

这应该可以,但是您还应该检查哪个是您真正需要的并且只使用那个


推荐阅读