c# - 压缩文件集合并移动到目标位置
问题描述
我在目标目录中收集所有文件并将它们添加到 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
我收到一个错误,告诉我它不能创建已经存在的东西。即使我在存档文件夹位置硬编码而不是从我的配置中获取它,也会发生这种情况。
我做错了什么?
解决方案
您需要指定目标文件名和目录:
File.Move("file.zip", Path.Combine(archiveFolder, "file.zip"));
推荐阅读
- java - java.lang.IllegalStateException: chrome 驱动程序在 Jenkins 中不可执行
- python - 如何用一张图上显示的两个字典的值来注释熊猫条形图?
- javascript - body标签中的onbeforeunload和beforeunload有什么区别?
- javascript - 如何在使用 java 脚本单击按钮时以 PDF 格式下载刀片页面?
- c# - 拆分 str-11-str 并仅取中间值
- node.js - 错误:找不到模块 Docker 节点容器
- java - Apache Beam:无法序列化和反序列化属性“awsCredentialsProvider”
- node.js - 错误:在 POSTMAN 中连接 ETIMEDOUT xxx.xxx.xxx.xx:7000
- websocket - 前端应用程序中的多个 Web 套接字
- r - R中令人困惑的字符编码