Galen.Ci.EntityFramework.Utilities.ZipUtility.ZipRecursive C# (CSharp) Method

ZipRecursive() public static method

public static ZipRecursive ( string rootDirectoryPath, DirectoryInfo currentDirectoryInfo, ZipArchive archive, TextWriter hashWriter, string hashName = ConstDefaultHashName ) : void
rootDirectoryPath string
currentDirectoryInfo System.IO.DirectoryInfo
archive System.IO.Compression.ZipArchive
hashWriter System.IO.TextWriter
hashName string
return void
        public static void ZipRecursive(
            string rootDirectoryPath,
            DirectoryInfo currentDirectoryInfo, 
            ZipArchive archive, 
            TextWriter hashWriter, 
            string hashName = ConstDefaultHashName)
        {
            rootDirectoryPath = NormalizePath(rootDirectoryPath);
            foreach (var file in currentDirectoryInfo.GetFiles())
            {
                var entryName = file.FullName.Substring(rootDirectoryPath.Length);

                using (var reader = file.OpenRead())
                {
                    var hash = AddToArchive(entryName, reader, archive, hashName);
                    hashWriter.WriteLine(HashEntryFormat, hash, entryName);
                    Serilog.Log.Verbose("Added {filePath} to zip archive.  MD5: {md5}", file.FullName, hash);
                }
            }

            // recurse
            foreach (var directory in currentDirectoryInfo.GetDirectories())
            {
                ZipRecursive(rootDirectoryPath, directory, archive, hashWriter, hashName);
            }
        }