Unzipping a .gz file using C#

后端 未结 3 1558
醉话见心
醉话见心 2020-11-29 10:00

I have a tarred gunzip file called ZippedXmls.tar.gz which has 2 xmls inside it. I need to programmatically unzip this file and the output should be 2 xmls copied in a folde

相关标签:
3条回答
  • 2020-11-29 10:38

    I've used .Net's built-in GZipStream for gzipping byte streams and it works just fine. I suspect that your files are tarred first, before being gzipped.

    You've asked for code, so here's a sample, assuming you have a single file that is zipped:

    FileStream stream = new FileStream("output.xml", FileMode.Create); // this is the output
    GZipStream uncompressed = new GZipStream(stream, CompressionMode.Decompress);
    
    uncompressed.Write(bytes,0,bytes.Length); // write all compressed bytes
    uncompressed.Flush();
    uncompressed.Close();
    
    stream.Dispose();
    

    Edit:

    You've changed your question so that the file is a tar.gz file - technically my answer is not applicable to your situation, but I'll leave it here for folks who want to handle .gz files.

    0 讨论(0)
  • 2020-11-29 10:38

    sharpziplib should be able to do this

    0 讨论(0)
  • 2020-11-29 10:39

    I know this question is ancient, but search engines redirect here for how to extract gzip in C#, so I thought I'd provide a slightly more recent example:

    using (var inputFileStream = new FileStream("c:\\myfile.xml.gz", FileMode.Open))
    using (var gzipStream = new GZipStream(inputFileStream, CompressionMode.Decompress))
    using (var outputFileStream = new FileStream("c:\\myfile.xml", FileMode.Create))
    {
        await gzipStream.CopyToAsync(outputFileStream);
    }
    

    For what should be the simpler question of how to untar see: Decompress tar files using C#

    0 讨论(0)
提交回复
热议问题