我的简单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);
}