将Zip中的文件保存到特定文件夹中

时间:2014-05-29 07:44:05

标签: c# download save unzip

我正在做这个项目,我从网上下载了我的zip文件,然后我将以编程方式解压缩然后将解压缩文件保存到特定的文件夹中。

例如,我即将下载的zip文件包含.png,.jpg,.docx,.ppt文件。

所以我要做的就是将所有.png保存到PNG文件夹,将.jpg保存到JPG文件夹等。

我已完成下载部分并解压缩。

现在的问题是如何根据文件类型将解压缩文件保存到不同的文件夹中?

任何人都可以帮助我。

至于现在这里是我所做的代码。

 using System;
 using Microsoft.Office.Interop.Excel;
 using Excel = Microsoft.Office.Interop.Excel;
 using System.Reflection;
 using System.Net;
 using System.ComponentModel;

 namespace UnzipFile
 {
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
public partial class MainWindow : System.Windows.Window
{

    public MainWindow()
    {
        InitializeComponent();
    }

这里是解压缩文件。

    public static void UnZip(string zipFile, string folderPath)
    {
        if (!File.Exists(zipFile))
            throw new FileNotFoundException();

        if (!Directory.Exists(folderPath))
            Directory.CreateDirectory(folderPath);

        Shell32.Shell objShell = new Shell32.Shell();
        Shell32.Folder destinationFolder = objShell.NameSpace(folderPath);
        Shell32.Folder sourceFile = objShell.NameSpace(zipFile);

        foreach (var file in sourceFile.Items())
        {
            destinationFolder.CopyHere(file, 4 | 16);
        }
    }

这里是解压缩文件但保存在文件夹中。 zip文件中的所有文件。

    private void btnUnzip_Click(object sender, RoutedEventArgs e)
    {
        UnZip(@"E:\Libraries\Pictures\EWB FileDownloader.zip", @"E:\Libraries\Pictures\sample");


    }

}

}

我想保存在我提取的不同文件夹中。

1 个答案:

答案 0 :(得分:1)

你可以尝试类似的东西,

string[] files = Directory.GetFiles("Unzip folder path");

foreach (var file in files)
{
   string fileExtension = Path.GetExtension(file);

   switch (fileExtension)
   {
       case ".jpg": File.Move(file, Path.Combine(@"Destination Folder\JPG", Path.GetFileName(file)));
       break;

       case ".png": File.Move(file, Path.Combine(@"Destination Folder\PNG", Path.GetFileName(file)));
       break;

       case ".docx": File.Move(file, Path.Combine(@"Destination Folder\DOC", Path.GetFileName(file)));
       break;

       case ".ppt": File.Move(file, Path.Combine(@"Destination Folder\PPT", Path.GetFileName(file)));
       break;

       default:
       break;
   }
}