Заархивировать коллекцию файлов и переместить в целевое местоположение - PullRequest
0 голосов
/ 18 марта 2019

Я собираю все свои файлы в целевой каталог и добавляю их в папку zip. После того, как этот zip-файл создан, и в него больше не нужно добавлять файлы, я хочу переместить эту zip-папку в другое место.

Вот мой код для выполнения всего вышеперечисленного:

var targetFolder = Path.Combine(ConfigurationManager.AppSettings["targetFolder"], "Inbound");
var archiveFolder = ConfigurationManager.AppSettings["ArchiveFolder"];

// get files
var files = Directory.GetFiles(targetFolder)
    .Select(f => new FileInfo(f))
    .ToList();

// places files into zip
using (var zip = ZipFile.Open("file.zip", ZipArchiveMode.Create))
{
    foreach (var file in files)
    {
        var entry = zip.CreateEntry(file.Name);
        entry.LastWriteTime = DateTimeOffset.Now;

        using (var stream = File.OpenRead(file.ToString()))
        using (var entryStream = entry.Open())
            stream.CopyTo(entryStream);
    }
}

// move the zip file
File.Move("file.zip", archiveFolder );

Где я падаю, это перемещение папки zip. Когда мой код достигает File.Move, я получаю сообщение об ошибке, сообщающее, что оно не может создать то, что уже существует. Это происходит даже тогда, когда я жестко кодирую в своей папке архива вместо того, чтобы получать его из моей конфигурации.

Что я с этим не так делаю?

1 Ответ

1 голос
/ 18 марта 2019

Вам необходимо указать имя файла назначения, а также каталог:

File.Move("file.zip", Path.Combine(archiveFolder, "file.zip"));
...