получение файла уже существует ошибка, поскольку код работает асинхронно - PullRequest
0 голосов
/ 24 октября 2018

Как показано ниже, код запускается асинхронно, 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 голосов
/ 26 октября 2018

Хорошо, поэтому я не уверен, что у вас есть проблема с создаваемым 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);
    }
}

Это должно сработать, но вы также должны проверить, какой именно вам нужен, и использовать только этот

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...