Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 提供存档项的zip文件是使用不受支持的压缩方法压缩的_C#_Exception Handling_Task Parallel Library_Unzip - Fatal编程技术网

C# 提供存档项的zip文件是使用不受支持的压缩方法压缩的

C# 提供存档项的zip文件是使用不受支持的压缩方法压缩的,c#,exception-handling,task-parallel-library,unzip,C#,Exception Handling,Task Parallel Library,Unzip,我需要创建一个例程来并行解压缩多个zip文件(zip的平均大小为2GB)。因此,我创建了一个使用TPL解压文件的函数 这在原则上运作良好。我还没有测试数据,所以我想我应该复制一个当前存在的zip文件,重命名其中的文件并重新压缩它。当我这样做的时候,我得到了以下错误: 存档项是使用不支持的压缩方法压缩的 好的,请评论一下你认为合适的代码,为什么我会在这里出错 代码: private static void UnzipfilesInTemp() { 任务[]解压器=null; boolrtn=fal

我需要创建一个例程来并行解压缩多个zip文件(zip的平均大小为2GB)。因此,我创建了一个使用TPL解压文件的函数

这在原则上运作良好。我还没有测试数据,所以我想我应该复制一个当前存在的zip文件,重命名其中的文件并重新压缩它。当我这样做的时候,我得到了以下错误:

存档项是使用不支持的压缩方法压缩的

好的,请评论一下你认为合适的代码,为什么我会在这里出错

代码:

private static void UnzipfilesInTemp()
{
任务[]解压器=null;
boolrtn=false;
//--在临时位置解压文件
var TEMP_ZIP_FILES=System.IO.Directory.GetFiles(tempPath,“*”+语句*.ZIP”);
解压器=新任务[TEMP_ZIP_FILES.Length];
unzip文件=新字符串[TEMP_ZIP_FILES.Length];
锁(这个锁)
{
对于(int i=0;i
{
//--解压缩用于语句导入的文件
尝试
{
提取器目录(文件名,临时路径);
}
捕获(例外)
{
//--无法解压缩文件
_coreprocess.AddLogDetailRecord(MSG,false,“”);
ProcessSuccess=false;
ExitAllCode();
}
});
}
}
Task.WaitAll(解压);
解压文件=System.IO.Directory.GetFiles(tempPath,“*”+BANK_NUM+“*.PDF”);
}

如果不在线程中执行,它的行为会有什么不同吗?还有,是什么软件创建了zip?zip有很多变体,不是每个解压器都能处理每个zip文件。支持几种压缩方法,如果该方法不在.NET中的
ZipFile
类支持的范围内,然后你会看到这个错误。有一些关于一些不同压缩方法的信息。这变得越来越普遍-我看到很多PPMd压缩文件经过我的办公桌。@Petesh谢谢。这很有帮助。我想我将编写一个小小的cmd行util来尝试创建测试文件,看看会发生什么。
 private static void UnzipfilesInTemp()
       {
           Task[] unzippers = null;
           bool rtn = false;

           //--UNZIP FILES IN TEMPORARY LOCATION
           var TEMP_ZIP_FILES = System.IO.Directory.GetFiles(tempPath, "*" + Statement*.zip");
           unzippers = new Task[TEMP_ZIP_FILES.Length];
           unZippedFiles = new string[TEMP_ZIP_FILES.Length];

           lock (thisLock)
           {

               for (int i = 0; i <= TEMP_ZIP_FILES.Length - 1; i++)
               {
                   string filename = TEMP_ZIP_FILES[i];
                   unzippers[i] = Task.Factory.StartNew(() =>
                   {

                       //--UNZIP FILE FOR STATEMENT IMPORTING

                       try
                       {

                           ZipFile.ExtractToDirectory(filename, tempPath);
                       }
                       catch (Exception)
                       {
                           //--UNABLE TO UNZIP FILES
                           _coreprocess.AddLogDetailRecord(MSG, false, "");
                           ProcessSuccess = false;
                           ExitAllCode();
                       }



                   });

               }

           }

           Task.WaitAll(unzippers);
           unZippedFiles = System.IO.Directory.GetFiles(tempPath, "*" + BANK_NUM + "*.PDF");

       }