Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.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# ExtractToFile与ExtractToDirectory_C#_File Io_Extraction - Fatal编程技术网

C# ExtractToFile与ExtractToDirectory

C# ExtractToFile与ExtractToDirectory,c#,file-io,extraction,C#,File Io,Extraction,我有一些将文件解压缩到目录的代码。在下面的代码中,Global.fullpath是文件本身的完整路径,其中as Global.path是目录的路径。此代码适用于: private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e) { AppendTextBox("Extracting Files...\r\n"); ZipFile.ExtractToDirectory(Glob

我有一些将文件解压缩到目录的代码。在下面的代码中,Global.fullpath是文件本身的完整路径,其中as Global.path是目录的路径。此代码适用于:

 private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
    {
        AppendTextBox("Extracting Files...\r\n");
        ZipFile.ExtractToDirectory(Global.fullPath, Global.path);
    }
但是,如果存在任何文件,我会尝试进行覆盖,因此我的代码似乎不会提取任何内容,即使没有现有文件:

 private void backgroundWorker2_DoWork(object sender, DoWorkEventArgs e)
    {
        AppendTextBox("Extracting Files...\r\n");
        using (ZipArchive archive = ZipFile.OpenRead(Global.fullPath))
        {
            foreach (ZipArchiveEntry entry in archive.Entries)
            {
                AppendTextBox("Extracting file: " + entry.FullName + "...\r\n");
                entry.ExtractToFile(Path.Combine(Global.path, entry.FullName), true);
            }
        }

    }

确保检查组合路径是否为有效的文件名。ExtractToFile方法需要一个以文件名结尾的路径,一些Zip归档文件可以包含文件夹。在这种情况下,entry.FullName属性会导致路径无效。

根据注释,如果您试图提取目录ExtractToFile,则无法达到预期效果。目录不能像文件一样容易地被覆盖。我认为你有两个选择:

检查FullName指定的目录是否存在,并在写入之前将其删除

检查FullName指定的目录是否存在,然后重命名您要编写的文件夹,如FullName=FullName+\u Copy


你试过调试吗?archive.Entries有项目吗?是的,它显示它包含5个项目。Global.path看起来怎么样?还有条目。全名?代码看起来不错。您有权限在那里创建文件吗?Global.path显示为C:\\users\\user\\Downloads entry.FullName显示为每日路由/每日路由\不是有效的文件名。