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

时间:2014-08-22 20:21:27

标签: c# zipfile

我的简单C#表单应用程序我想单击一个按钮(FolderBrowserDialog)并导航到我的计算机上的文件夹。

此文件夹将包含数十个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);

        }

0 个答案:

没有答案