où DotNetZip obtenir son répertoire racine pour l'enregistrement. Tous les exemples de sauvegarde ne montrent pas le répertoire.Quel est le répertoire racine OU comment puis-je définir le répertoire dans DotNetZip
Mon but est de recurfer un dossier et des sous-dossiers. Dans chaque dossier, je veux compresser tous les fichiers dans un zip et supprimer les fichiers source.
private void CopyFolder(string srcPath, string dstPath)
{
if (!Directory.Exists(dstPath))
Directory.CreateDirectory(dstPath);
string[] files = Directory.GetFiles(srcPath);
string msg;
string zipFileName;
using (ZipFile z = new ZipFile(Path.Combine(srcPath,String.Format("Archive{0:yyyyMMdd}.zip", DateTime.Now))))
{
z.ReadProgress += new EventHandler<ReadProgressEventArgs>(z_ReadProgress);
foreach (string file in files)
{
FileInfo fi = new FileInfo(file);
AddLog(String.Format("Adding {0}", file));
z.AddFile(file);
}
//z.Save(Path.Combine(srcPath, String.Format("Archive{0:yyyyMMdd}.zip", DateTime.Now)));
z.Save();
if (deleteSource)
{
foreach (string file in files)
{
File.Delete(file);
}
}
zipFileName = z.Name;
}
if (!compressOnly)
File.Copy(Path.Combine(srcPath,zipFileName), Path.Combine(dstPath, Path.GetFileName(zipFileName)));
string[] folders = Directory.GetDirectories(sourcePath);
foreach (string folder in folders)
{
string name = Path.GetFileName(folder);
string dest = Path.Combine(dstPath, name);
Console.WriteLine(ln);
log.Add(ln);
msg = String.Format("{3}{4}Start Copy: {0}{4}Directory: {1}{4}To: {2}", DateTime.Now.ToString("G"), name, dest, ln, Environment.NewLine);
AddLog(msg);
if (recurseFolders)
CopyFolder(folder, dest);
msg = String.Format("Copied Directory: {0}{4}To: {1}\nAt: {2}{3}", folder, dest, DateTime.Now.ToString("G"), Environment.NewLine);
AddLog(msg);
}
}
Et comment cela est-il réglé? Avec un meathod statique d'une classe dans System.File.IO? –
Vous pouvez utiliser Directory.SetCurrentDirectory si vous le souhaitez et disposer des autorisations requises (http://msdn.microsoft.com/en-us/library/system.io.directory.setcurrentdirectory.aspx). Ce n'est pas obligatoire, car vous pouvez toujours spécifier le chemin d'une autre manière. –