LitDev.LDZip.AddToArchive C# (CSharp) Method

AddToArchive() private static method

private static AddToArchive ( Package zip, string fileToAdd, string root ) : void
zip System.IO.Packaging.Package
fileToAdd string
root string
return void
        private static void AddToArchive(Package zip, string fileToAdd, string root)
        {
            try
            {
                string uriFileName = fileToAdd.Replace(" ", "_");
                FileAttributes attr = System.IO.File.GetAttributes(fileToAdd);
                if ((attr & FileAttributes.Directory) == FileAttributes.Directory)
                {
                    root = root + "/" + Path.GetFileName(uriFileName);
                    string[] subfolders = Directory.GetDirectories(fileToAdd);
                    for (int i = 0; i < subfolders.Length; i++)
                    {
                        AddToArchive(zip, subfolders[i], root);
                    }
                    string[] subfiles = Directory.GetFiles(fileToAdd);
                    for (int i = 0; i < subfiles.Length; i++)
                    {
                        AddToArchive(zip, subfiles[i], root);
                    }
                }
                else
                {
                    string zipUri = string.Concat(root + "/", Path.GetFileName(uriFileName));
                    Uri partUri = new Uri(zipUri, UriKind.Relative);
                    string contentType = System.Net.Mime.MediaTypeNames.Application.Zip;
                    if (zip.PartExists(partUri)) zip.DeletePart(partUri);
                    PackagePart pkgPart = zip.CreatePart(partUri, contentType, CompressionOption.Normal);
                    Byte[] bytes = System.IO.File.ReadAllBytes(fileToAdd);
                    pkgPart.GetStream().Write(bytes, 0, bytes.Length);
                }
            }
            catch (Exception ex)
            {
                TextWindow.WriteLine(fileToAdd);
                Utilities.OnError(Utilities.GetCurrentMethod(), ex);
            }
        }