2016-06-16 3 views
1

Так что у меня возникли проблемы с попыткой примирить эту концепцию, поскольку каждое изменение, которое я делаю, похоже, не устраняет проблему.Zip несколько файлов в одну папку

У меня есть многострочный textbox и может ввести несколько значений, разделенных запятыми и здесь подробности:

  1. Каждое значение представляет собой папку
  2. И каждая папка имеет несколько документов/другие папки внутри
  3. All из этих значений находятся в одном основном каталоге (позволяет называть его путь к папке)

Например, я вхожу в свой текстовый блок «65635,65636» каждый из них представляет собой папку в директории т.е. «\ путь_к_папке \ 65635» и «\ путь_к_папке \ 65636», я пытаюсь застегнуть эти целые папки с помощью DotNetZiplib, я знаю, как это сделать, если я специально ссылаюсь на одну папку, но есть ли где-нибудь петля через текстовое поле, чтобы получить имена папок и добавить файлы в одну папку на молнии?

Using zip As New ZipFile = new ZipFile 
Dim files() As String = Directory.GetFiles(folderpath & textboxvalue) 
For each textboxvalue in directory.getfiles 
    zip.Addfile(textboxvalue) 

Функция zipfile я должен бы знать, чтобы перебрать их, в отличие от предполагая, что это один большой файл.

+0

@ jean55 да я проверил zagglers завершенным, так как он работал спасибо! Но я неправильно понял моего босса, он сказал, что я могу использовать сторонние библиотеки, и он хочет, чтобы я проходил через em all, я могу это сделать, если его единственный на основе вашего ответа (мой раздел кода в вопросе не работает, возвращает дубликаты, не уверен, почему), и я не знаю, как, у вас есть какая-либо информация о dotnetziplib? и проверяет ответ, что означает его правильное? или я должен сделать что-то еще? извините, я все еще получаю комментарии. – jean55

+0

Пожалуйста, [** см. Эту ссылку **] (http://stackoverflow.com/help/someone-answers) о принятии и голосовании за ответы. Это [** ссылка **] (http://meta.stackexchange.com/questions/5234/how-does-accepting-an-answer-work) также полезна. – Codexer

+0

@ Zaggler Еще раз спасибо за помощь и ссылки :) Я больше разбираюсь в vb с каждым вопросом! – jean55

ответ

1

Вы должны разделить значения текстового поля в массиве, чтобы получить числа, разделенные запятой. Затем вам понадобится объединить свою папку с этими значениями разделенных текстов, правильно создав путь.

Проверьте, существует ли папка в системе, если Да, затем получите все файлы из каталога и для каждого имени файла запишите его.

Что-то вроде этого:

Using zip As New ZipFile("your zip filename") 
For Each str As String In textboxvalue.Split(",") 
    Dim path as String = System.IO.Path.Combine(folderpath, str) 
    If System.IO.Directory.Exists(path) = False Then 
     Continue For 
    End If 

    Dim files() As String = Directory.GetFiles(path) 

    For Each fileName As String In files 
     zip.Addfile(fileName) 
    Next 
Next 
End Using 
+1

Не могли бы вы объяснить *** почему решение OP *** не работает. В этом сообщении ничего не говорится о том, почему логика OP не работает. Публикация решения - это одно, объяснение проблемы и решение этой проблемы - лучшее решение, которое поможет OP понять проблему и как ее решить. – Codexer

+0

Да, вы правы !!! – pedrofernandes

+0

Спасибо, это более полезно. – Codexer

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