将 .zip 文件解压缩到文件夹 C#

斯蒂芬·皮萨罗夫

当我尝试创建用于将 .zip 文件解压缩到文件夹中的代码时遇到问题,在向您展示代码之前,我想告诉您我需要做什么?

很简单,我想编写代码,以便当用户单击按钮时,它会删除一个目录,然后下载一个新的 .zip 文件并将其解压缩到已删除的同一目录和名称中......就像恢复一样目录到默认形式..

我成功编写了用于删除目录和下载 .zip 文件的代码,但我无法编写用于提取该 .zip 文件的代码......

这是代码

private void button2_Click(object sender, EventArgs e)
{
    // Is file downloading yet?
    if (webClient != null)
        return;

    var sprdir = new DirectoryInfo(@"cstrike/sprites");
    string sprzippath = @"cstrike/sprites.zip";
    string extzippath = @"cstrike";
    if (!sprdir.Exists)
    {
        webClient = new WebClient();
        webClient.DownloadFileAsync(new Uri("https://sipi-portfolio.000webhostapp.com/csfiledownload/sprites.zip"), @"cstrike/sprites.zip");
    }
    else
    {
        sprdir.Attributes = sprdir.Attributes & ~FileAttributes.ReadOnly;
        sprdir.Delete(true);
        webClient = new WebClient();
        webClient.DownloadFileAsync(new Uri("https://sipi-portfolio.000webhostapp.com/csfiledownload/sprites.zip"), @"cstrike/sprites.zip");
    }

}

是的,我尝试使用System.IOandSystem.IO.CompressZipFile.ExtractToDirectoryand ExtractToDirectory,没有人工作......只是在文本下方得到红线..

阿维亚德·哈西多夫

所以首先你需要将程序集 System.IO.Compression.FileSystem 添加到你的项目中。

第二件事是您使用的 DownloadFileAsync 可能尚未完成,因此您的提取失败(因为尚不存在文件)

第三个是如果文件夹不存在,则您不会创建该文件夹,这会使 WebClient.DownloadFileAsync 失败。

您需要注册到 DownlodFileCompleted 的事件和那里的提取。

这是一个例子:

using System;
using System.ComponentModel;
using System.IO;
using System.Net;
using System.Windows.Forms;
using System.IO.Compression;

namespace Stack
{
    public partial class Form1 : Form
    {
        WebClient webClient;// = new WebClient();
        const string basPath = @"D:\test";

        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            // Is file downloading yet?
            if (webClient != null)
                return;

            //var sprdir = new DirectoryInfo(@"cstrike/sprites");

            var sprdir = new DirectoryInfo(basPath);
            string sprzippath = $"{basPath}/sprites.zip";
            string extzippath = @"cstrike";
            if (!sprdir.Exists)
            {
                Directory.CreateDirectory(basPath);
                webClient = new WebClient();
                webClient.DownloadFileCompleted += ExtratcZip;
                webClient.DownloadFileAsync(
                    new Uri("https://sipi-portfolio.000webhostapp.com/csfiledownload/sprites.zip"),
                    $"{basPath}/sprites.zip");
            }
            else
            {
                sprdir.Attributes = sprdir.Attributes & ~FileAttributes.ReadOnly;
                sprdir.Delete(true);
                Directory.CreateDirectory(basPath);
                webClient = new WebClient();
                webClient.DownloadFileCompleted += ExtratcZip;
                webClient.DownloadFileAsync(
                    new Uri("https://sipi-portfolio.000webhostapp.com/csfiledownload/sprites.zip"),
                    $"{basPath}/sprites.zip");
            }
        }

        private void ExtratcZip(object sender, AsyncCompletedEventArgs e)
        {
            ZipFile.ExtractToDirectory($"{basPath}/sprites.zip", $"{basPath}");
        }
    }
}

希望能帮助到你。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将zip文件解压缩到本地文件夹

zipfile将zip解压缩到一个文件夹

如何将zip文件解压缩到文件夹中,但要避免重复文件夹?

将创建的 zip 文件夹解压缩到同一文件夹?

批处理如何使用 7zip 将多个 zip 文件解压缩到其原始文件夹?

将多个zip文件解压缩到具有特定名称的不同文件夹中

GNU parallel + gunzip(或7z或bsdtar或解压缩):将每个“ archivename.zip”解压缩到(将要创建)其“ archivename”子文件夹中

如何在C#中获取程序的当前文件夹名称并将zip文件解压缩到当前文件夹?

批处理文件以将文件内容解压缩到文件夹,并使用zip文件名重命名/前缀内容

无法将文件解压缩到文件夹

如何将多个zip文件解压缩到一个目录结构中(例如Google Drive文件夹导出)

将档案解压缩到单个文件夹

将文件扩展名更改为 .zip 并从文档文件夹中解压缩文件

我们如何在linux中指定unzip或7za命令将多个zip文件解压缩到一个文件夹中,同时保留所有重复文件?

解压缩到与文件同名的文件夹(不带.zip扩展名)

如何将 .zip 文件解压缩到 lambda 函数中的目录

.NET 3.5如何使用DotNetZip将ZIP文件解压缩到指定位置

将zip文件的子目录内容解压缩到/ tmp?

将文件解压缩到上一个文件夹

将.xip文件解压缩到特定文件夹中

Powershell 将文件解压缩到特定文件夹中

Tomcat何时将War文件解压缩到ROOT文件夹中?

如何使用powershell将tar文件解压缩到特定文件夹

将 .zip 文件解压缩到所有包含 .php 文件的目录中,其中包含文本“house”?

如何将文件压缩到android中的zip文件夹中?

受密码保护的.zip解压缩到空文件夹(不提示输入密码)

如何解压缩多个 zip 文件夹

如何将许多文件解压缩到新的相应文件夹中?[胜利10]

使用Python 2.7.5将文件夹中的所有压缩文件解压缩到同一文件夹