2015-06-09 2 views
0

Я пробовал zip всех файлов в папке и сохранял их в другой папке.BadDirectoryException при zipping-файлах

Ошибка:

That name specifies an existing directory. Please specify a filename. Parameter Name: fileName

AppConfig:

<appSettings> 
    <add key="ZipLocation" value="c:\example\start"/> 
    <add key="ZipSaveLocation" value="c:\example\extract"/> 
</appSettings> 

Код:

//using Ionic.Zip; 

static void Main(string[] args) 
{ 
    string startPath = ConfigurationManager.AppSettings["ZipLocation"].ToString(); 
    string zipPath = ConfigurationManager.AppSettings["ZipSaveLocation"].ToString(); 
    int key = Convert.ToInt32(Console.ReadLine()); 
    try 
    { 
     using (ZipFile zip = new ZipFile()) 
     { 
      String[] filenames = System.IO.Directory.GetFiles(startPath); 

      foreach (String filename in filenames) 
      { 
       Console.WriteLine("Adding {0}...", filename); 
       ZipEntry e = zip.AddFile(filename); 
       e.Comment = "bla bla."; 
      } 
      zip.Comment = String.Format("This zip archive was created by the CreateZip example application on machine '{0}'", System.Net.Dns.GetHostName()); 
      zip.Save(zipPath); 
     } 
    } 
    catch (Exception) 
    { 
     throw; 
    } 
} 
+0

Вы не указали имя файла, просто каталог, в котором вы хотите сохранить файл. – noMad17

ответ

1

У вас есть это:

string zipPath = ConfigurationManager.AppSettings["ZipSaveLocation"].ToString(); 

, а затем вы называете это:

zip.Save(zipPath); 

zipPath не файл, это папка.

Исправьте код, делая что-то вроде:

zip.Save(Path.Combine(zipPath,"newZipFile.zip")); 
+0

Действительно? Сначала вы спросите меня, почему я сделал бы это, а потом вы скопировали его прямо сейчас? – noMad17

+1

Ты слепой? Как ваш ответ: ZipEntry e = zip.AddFile (Path.Combine (имя файла, «myZipfile.zip»)); Даже удаленно близко к моему? Ты троллинг? – bill

+0

Да, извините. Я неправильно понял – noMad17

1

Вы должны предоставить файл не только путь:

просто изменить c:\example\extract к c:\example\extract\extract.zip, например.

Edit:

Используйте следующее:

zip.Save(Path.Combine(zipPath, Path.GetDirectoryName(startPath))); 
+0

Я хочу закрепить все файлы в стартовой папке. start.zip сохранить в c: \ example \ extract folder. Как я могу исправить свой код? – Mhmt

+1

См. Мой ответ ... – bill

Смежные вопросы