Search code examples
c#sharpziplib

Writing zip contents to a text file


I'm trying to write the contents of a zip file to a text file. My code right now only writes the first file. (This is using SharpZipLib)

ZipInputStream zip = new ZipInputStream(File.OpenRead(AddonFile));
ZipEntry item;

while ((item = zip.GetNextEntry()) != null)
{
    FileStream fs1 = new FileStream(
        @"resource\texts\"+ Path.GetFileName(AddonFile)+".text",
        FileMode.OpenOrCreate, FileAccess.Write);
    StreamWriter writer = new StreamWriter(fs1);
    writer.Write(item.Name);
    writer.Close();
}

Solution

  • You are creating a new file each time you process a zip file entry, open the file outside the while loop and close it after the loop, like so:

    ZipInputStream zip = new ZipInputStream(File.OpenRead(AddonFile));
    ZipEntry item;
    
    FileStream fs1 = new FileStream(
        @"resource\texts\"+ Path.GetFileName(AddonFile)+".text",
        FileMode.OpenOrCreate, FileAccess.Write);
    StreamWriter writer = new StreamWriter(fs1);
    
    while ((item = zip.GetNextEntry()) != null)
    {
        writer.Write(item.Name);
    }
    writer.Close();