2009-07-02 13 views
2

Ok,SharpZipLib ~ Wie bestimmte Dateien aus einem Zip-

ich eine Liste von Dateien (Source Objekte, die nur die Dateinamen nur enthalten) habe extrahieren dann mag ich diese bestimmten Dateien aus einem Zip ziehen und sie Dump in ein temporäres Verzeichnis, damit ich sie später verteilen kann.

kam ich mit diesem, aber ich bin nicht sicher, wie man weiter vorgehen ..

private List<string> ExtractSelectedFiles() 
{ 
List<SourceFile> zipFilePaths = new List<SourceFile>(); 
List<string> tempFilePaths = new List<string>(); 

if (!File.Exists(this.txtSourceSVNBuildPackage.Text)) { return tempFilePaths; }; 

FileStream zipFileStream = File.OpenRead(this.txtSourceSVNBuildPackage.Text); 
ZipInputStream inStream = new ZipInputStream(zipFileStream); 

foreach (SourceFile currentFile in _selectedSourceFiles) 
{ 
    bool getNextEntry = true; 

    while (getNextEntry) 
    { 
      ZipEntry entry = inStream.GetNextEntry(); 

     getNextEntry = (entry != null); 

       if (getNextEntry) 
      { 
      if (fileType == ".dll") 
      { 
       if (sourcefile.Name == Path.GetFileName(entry.Name)) 
       { 
       //Extract file into a temp directory somewhere 

       //tempFilePaths.Add("extractedfilepath") 
       } 
      } 
      } 
      } 
     } 

    return tempFilePaths; 
} 

FYI:

public class SourceFile 
{ 
    public string Name { get; set; } //ex. name = "Fred.dll" 
} 

Antwort

2

ok .. ich dachte, Sie aktualisieren würde alles nachdem ich zusammen das fehlende Stück, das ich brauchte.

//in the code somewhere above: 
string tempDirectory = Environment.GetEnvironmentVariable("TEMP"); 
string createPath = tempDirectory + "\\" + Path.GetFileName(entry.Name); 


//my missing piece.. 
//Extract file into a temp directory somewhere 
FileStream streamWriter = File.Create(createPath); 

int size = 2048; 
byte[] data = new byte[2048]; 
while (true) 
{ 
    size = inStream.Read(data, 0, data.Length); 
    if (size > 0) 
    { 
     streamWriter.Write(data, 0, size); 
    } 
    else 
    { 
     break; 
    } 
} 

streamWriter.Close(); 
Verwandte Themen