【问题标题】:Zip multiple files to one folder将多个文件压缩到一个文件夹
【发布时间】:2016-06-16 16:09:15
【问题描述】:

所以我在尝试协调这个概念时遇到了麻烦,因为我所做的每一次更改似乎都无法解决问题。

我有多行textbox,可以输入多个用逗号分隔的值,这里是详细信息:

  1. 每个值代表一个文件夹
  2. 每个文件夹里面有多个文档/其他文件夹
  3. 所有这些值都在一个主目录中(我们称之为文件夹路径)

例如说我在我的文本框中输入 "65635,65636" 每一个都代表目录中的一个文件夹,即 "\folderpath\ 65635""\folderpath\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 函数我知道循环遍历这些而不是假设它是一个大文件。

【问题讨论】:

  • @jean55 是的,我检查了 zagglers 是否完整,因为它有效,谢谢!但是我误解了我的老板,他说我可以使用 3rd 方库,他想让我循环遍历所有这些库,如果它基于您的答案,我可以做到(我在问题中的代码部分不起作用,返回重复项不知道为什么) 我不知道怎么做,你有关于 dotnetziplib 的任何信息吗?检查答案是否意味着正确?还是我必须做其他事情?抱歉,我仍然无法发表评论。
  • see this link接受和投票以获得答案。这个link 也很有用。
  • @Zaggler 再次感谢您提供的所有帮助和链接 :) 我对每个问题的 vb 有了更多的了解!
  • 不客气,编码愉快!

标签: vb.net zipfile


【解决方案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

【讨论】:

  • 您能否解释一下为什么 OP 解决方案 不起作用。这篇文章没有解释为什么 OP 逻辑不起作用。发布解决方案是一回事,解释问题以及如何解决问题是更好的解决方案,可以帮助 OP 了解问题以及如何解决问题。
  • 谢谢,这样更有好处。
  • @pho3nix 感谢您的回复!我试过了,代码执行得很好,没有任何错误,但我在文件夹路径中看不到任何 zip 文件,我将我的 zip 文件命名为“extract.zip”,并且没有创建具有该名称的 zip 文件,对此有什么想法吗?有什么方法可以指定创建的 zip 的去向吗?喜欢目的地?
  • 你必须创建类似 c:\projects\extract.zip 的东西,而不仅仅是 extract.zip(记得放 Using )或在 End Using 之前调用 zip.Close()
猜你喜欢
  • 1970-01-01
  • 2021-10-16
  • 2023-03-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
相关资源
最近更新 更多