2016-04-14 10 views
-1

Hallo, dieser Code funktioniert für mich, aber es entpackt die Dateien in das gleiche Verzeichnis. Ich möchte die Dateien in ein neues Verzeichnis entpacken. Siehe Code untenGZipStream Entpacken Sie die Dateien in ein separates Verzeichnis

public void Main() 
{ 

    DirectoryInfo directorySelected = new DirectoryInfo(m_ProjectPath+m_Tool); 

    foreach (FileInfo fileToDecompress in directorySelected.GetFiles("*.gz")) 
    { 
     Decompress(fileToDecompress); 
    } 
} 

public void Decompress(FileInfo fileToDecompress) 
{ 
    using (FileStream originalFileStream = fileToDecompress.OpenRead()) 
    { 
     string currentFileName = fileToDecompress.FullName; 
     string newFileName = currentFileName.Remove(
       currentFileName.Length - fileToDecompress.Extension.Length); 

     using (FileStream decompressedFileStream = File.Create(newFileName)) 
     { 
      using (GZipStream decompressionStream = 
       new GZipStream(originalFileStream, CompressionMode.Decompress)) 
      { 
       decompressionStream.CopyTo(decompressedFileStream); 
      } 
     } 
    } 
} 
+0

Nicht klar, was Sie Problem haben - bitte klären (bisher gibt es nur eine Anfrage für eine Funktion). Vielleicht möchten Sie in die 'System.IO.Path'-Klasse schauen, da sie wahrscheinlich eine Lösung für alles enthält, was Sie beim Implementieren von Problemen haben. –

Antwort

0

Sie kopieren die decompressedFileStream-newFileName das ist:

string newFileName = currentFileName.Remove(
      currentFileName.Length - fileToDecompress.Extension.Length); 

Blick auf newFileName in Ihrem Debugger; Es ist nur der ursprüngliche Dateiname im ursprünglichen Verzeichnis mit der entfernten Dateinamenerweiterung. Wenn Sie es in ein anderes Verzeichnis kopieren wollen, müssen Sie das Verzeichnis angeben, nicht das von currentFileName kopieren. Sie möchten wissen, wie Sie ein Verzeichnis angeben? Dies hängt davon ab, ob Sie eine Befehlszeilenanwendung, eine WinForm-, WPF-, ASP.NET- oder Windows Store-App verwenden.

Verwandte Themen