2013-12-11 117 views
1

我目前正在使用一個簡單的應用程序,在其中瀏覽目錄,然後列出該目錄中包含的所有文件。我使用Path.GetFilename和其他東西來獲取每個文件的描述。現在我正在研究壓縮文件呢?我想查看壓縮文件(zip,rar)並獲取所有可以獲得的文件信息。我該怎麼做?獲取來自壓縮文件(C#)的所有信息

這裏是我到目前爲止的代碼:

if (folderBrowserDialog1.ShowDialog() == DialogResult.OK) 
     { 
      button1.Enabled = true; 
      this.dataGridView1.Rows.Clear(); 
      dPaths = ""; 
      string[] filePaths = Directory.GetFiles(folderBrowserDialog1.SelectedPath, "*.*", SearchOption.AllDirectories); 
      for (int y = 0; y < filePaths.Length; y++) 
      { 
       FileInfo fInfo = new FileInfo(filePaths[y]); 


       if (Path.GetExtension(filePaths[y]) != ".zip" && Path.GetExtension(filePaths[y]) != ".rar") 
       { 
        this.dataGridView1.Rows.Add(
         Path.GetFileName(filePaths[y]), 
         Path.GetExtension(filePaths[y]), 
         fInfo.Length, 
         fInfo.LastWriteTime, 
         Path.GetDirectoryName(filePaths[y])); 

        dPaths = dPaths 
         + Path.GetFileName(filePaths[y]) + "?" 
         + Path.GetExtension(filePaths[y]) + "?" 
         + fInfo.Length + "?" 
         + fInfo.LastWriteTime + "?" 
         + Path.GetDirectoryName(filePaths[y]) 
         + ";"; 
        // Legend: 
        // ? = explode for files, in order: Filename FileExtension Filesize FileDateModified Filepath 
        // ; = explode for every files 
       } 
       else //zip/rar detected, everything inside is not working though 
       { 
        string[] compressedfile = Directory.GetFiles(filePaths[y], "*.*", SearchOption.AllDirectories); 
        for (int x = 0; x < compressedfile.Length; x++) 
        { 
         FileInfo fInfo2 = new FileInfo(compressedfile[x]); 
         this.dataGridView1.Rows.Add(
         Path.GetFileName(compressedfile[x]), 
         Path.GetExtension(compressedfile[x]), 
         fInfo2.Length, 
         fInfo2.LastWriteTime, 
         Path.GetDirectoryName(compressedfile[x])); 

         dPaths = dPaths 
          + Path.GetFileName(compressedfile[x]) + "?" 
          + Path.GetExtension(compressedfile[x]) + "?" 
          + fInfo2.Length + "?" 
          + fInfo2.LastWriteTime + "?" 
          + Path.GetDirectoryName(compressedfile[x]) 
          + ";"; 
        } 
       } 
      } 
     } 

回答