C# 如何使用Zipfile提取一个目录中的所有文件

C# 如何使用Zipfile提取一个目录中的所有文件,c#,zipfile,C#,Zipfile,使用我的简单C表单应用程序,我想单击一个按钮文件夹浏览器对话框并导航到我计算机上的一个文件夹 此文件夹将包含几十个zip文件。然后我将选择此文件夹 在我选择的文件夹中,程序应该为每个zip文件创建一个子文件夹,用各自zip文件的名称命名子文件夹,并解压缩各自子文件夹中zip文件的内容 在下面的代码中,我在选择父文件夹和将路径分配给字符串变量sbDir方面没有问题 我遇到的问题是将sbDir传递给private void Decompress,它将创建子文件夹并解压缩zip文件 我如何解决这个问题

使用我的简单C表单应用程序,我想单击一个按钮文件夹浏览器对话框并导航到我计算机上的一个文件夹

此文件夹将包含几十个zip文件。然后我将选择此文件夹

在我选择的文件夹中,程序应该为每个zip文件创建一个子文件夹,用各自zip文件的名称命名子文件夹,并解压缩各自子文件夹中zip文件的内容

在下面的代码中,我在选择父文件夹和将路径分配给字符串变量sbDir方面没有问题

我遇到的问题是将sbDir传递给private void Decompress,它将创建子文件夹并解压缩zip文件

我如何解决这个问题

下面是我正在使用的代码

namespace HealthCheckScanner
{

    public partial class Form1 : Form
    {

        string sbDir = null;


        public Form1()
        {
            InitializeComponent();
        }

        //Get the zip files parent directory
        private void sbFolder_Click(object sender, EventArgs e)
        {

            FolderBrowserDialog folderDlg = new FolderBrowserDialog();
            folderDlg.ShowNewFolderButton = true;

            DialogResult result = folderBrowserDialog1.ShowDialog();
            if (result == DialogResult.OK)
            {
                sbDir = Convert.ToString(folderBrowserDialog1.SelectedPath);
            }
        }

        //Uncompress all zip files in their own directory using zip file name in the parent directory
        private void Decompress(DirectoryInfo sbDir)
        {

            foreach (FileInfo file in sbDir.GetFiles())
            {
                string fileName = (Regex.Replace(sbDir + file.Name, ".Zip", ""));
                string filePath = Convert.ToString(sbDir);
                ZipFile.ExtractToDirectory(fileName, filePath);

            }
        }
    }
} 
我能够使用以下代码找到解决方案

//Get the zip files parent directory
    private void sbFolder_Click(object sender, EventArgs e)
    {

        FolderBrowserDialog folderDlg = new FolderBrowserDialog();
        folderDlg.ShowNewFolderButton = true;

        DialogResult result = folderBrowserDialog1.ShowDialog();
        if (result == DialogResult.OK)
        {
            sbDir = Convert.ToString(folderBrowserDialog1.SelectedPath);
        }


        DirectoryInfo directory = new DirectoryInfo(@sbDir);

        foreach (FileInfo file in directory.GetFiles())
        {

            string pathA = file.Name;
            int index = pathA.IndexOf(".");
            if (index > 0)
                pathA = pathA.Substring(0, index);


            string filePath = sbDir + @"\" + pathA;
            string fileName = sbDir + @"\" + file.Name;

            //Uncompress all zip files in their own directory using zip file name in the parent directory
            ZipFile.ExtractToDirectory(fileName, filePath);

        }

你的问题是什么?那么你想创建与zip文件同名的子文件夹,并在各自的子文件夹中解压缩zip的内容吗?回答Steve,是的,这正是我想做的。我想导航到一个包含几十个zip文件的目录,选择目录,然后让程序创建与zip文件同名的子文件夹,并在其各自的子文件夹中解压缩zip的内容。然后编辑您的问题,清楚地解释您需要达到的目的,并等待问题重新出现。现在是否能够具体地重新打开我的问题?