개발/C#

Zip 파일 압축풀기

한번사는인생. 2017. 5. 10. 13:42

ICSharpCode.SharpZipLib dll을 사용하여 Zip 파일을 압축해제 하였다.



/// <summary>

/// 압축을 해제합니다.

/// </summary>

/// <param name="filename">파일 이름입니다.</param>

/// <param name="destination">압축 풀 위치입니다.</param>

static void DeCompression(string filename, string destination) {

    string zipPath = filename;


    FileStream fs = new FileStream(zipPath, FileMode.Open, FileAccess.Read, FileShare.Read);


    ZipInputStream zis = new ZipInputStream(fs);

    ZipEntry ze;


    while ((ze = zis.GetNextEntry()) != null) {

        if (!ze.IsDirectory) {

            string fileName = Path.GetFileName(ze.Name);


            string destDir = Path.Combine(destination, Path.GetDirectoryName(ze.Name));


            if (false == Directory.Exists(destDir)) {

                Directory.CreateDirectory(destDir);

            }


            string destPath = Path.Combine(destDir, fileName);


            FileStream writer = new FileStream(destPath, FileMode.Create, FileAccess.Write, FileShare.Write);


            byte[] buffer = new byte[2048];

            int len;

            while ((len = zis.Read(buffer, 0, buffer.Length)) > 0) {

                writer.Write(buffer, 0, len);

            }


            writer.Close();

        }

    }


    zis.Close();

    fs.Close();

}