c# - C# System.IO.InvalidDataException 压缩文件
问题描述
System.IO.InvalidDataException:“中央目录结尾中预期的条目数与中央目录中的条目数不匹配。”
当我尝试将 zip 文件解压缩到文件夹时,我正在“为了好玩”而制作的代码出现此错误。帮助 ;-;
这是我的情况:我制作了一个拖放面板,它接收一个具有唯一扩展名的文件(该文件是一个 zip,但我将扩展名更改为测试)。然后程序将获取存档中的第一行文本,并创建一个文件夹以提取具有第一行给出的名称的文件。但它在提取代码上出现错误
string[] Arquivo = (string[])e.Data.GetData(DataFormats.FileDrop, false);
foreach (string arquivo in Arquivo)
{
MessageBox.Show(arquivo);
string[] allLines = File.ReadAllLines(arquivo);
string line = string.Empty;
if (allLines.Length >= 1)
{
line = allLines[0];
}
string Diretorio = @"C:\CommunicAlt\" + line;
MessageBox.Show(Diretorio);
if (!Directory.Exists(Diretorio))
{
Directory.CreateDirectory(Diretorio);
}
Path.ChangeExtension(arquivo, ".zip");
ZipFile.ExtractToDirectory(arquivo, Diretorio); //<--Here
解决方案
我解决了它,问题是:zip存档有一个带有文本的新行来创建一个目录,但是如果存档中的行数与默认值不同,则Visual Studio无法提取它......所以它不会提取。解决方案是保持 zip 存档不变,并使用配置信息创建一个新文件。
推荐阅读
- android - android材质库在使用TextInputLayout的密码切换drawable时使应用程序崩溃
- python - 如何连接或合并两个数据框
- uwp - 在 C++/WinRT 中捕获 ContentDialog::ShowAsync 引发的异常
- javascript - 从 Blob.text() 获取 Blob
- github - 如何在同一存储库中的 github 操作之间共享代码?
- javascript - 数组没有在地图方法中将对象推送到它
- shell - 使用 ffmpeg 在视频流上叠加图像
- java - 客户端无法将 HTTPS 与 WireMock 对话:javax.net.ssl.SSLException: Unsupported or unrecognized SSL message
- angular - Angular Lazy Loading 再次加载相同的路线
- scala - Spark:如何将 Epoch 天数转换为 Date 对象