Search code examples
.netvb.netwinformszipphp-ziparchive

Zip Files in .Net 4.5 without 3rd party libraries


I have a windows form (made with vb) where the business user can enter document numbers in a multi line textbox, each number can have one to many documents under that number i.e. if they enter 12345 then the gridview will display the 4 documents (the name of the documents and the description) that correspond to that document number.

Now I figured out how to parse the document numbers since if they want to enter more than one they need to separate by a comma (thanks to stackoverflow :D!) so I have this list of document names and I have searched this site but I cant understand how to loop through that list of document names from my directory and zip them to a folder without 3rd party libraries like dotnet etc since I am not allowed.

I know about .NET's static (? not sure if the right term) class "zipfile" and "ziparchive" with system.IO and system.IO.compression but looking at the msdn website and answers on here I found answers relating to writing lines in a file to add to a zipfile folder or creating them in the folder.

So my question is, is there anyway where I can loop through that list of document names and create a zipfile folder and add them to the created zipfile folder? So far I got this far in regards to zip paths I got the document name and path for each "file" in the list shown below( which I talked about above):

Dim values As String = TextBox1.Text.Replace(" ", ",")
Dim DocNum As String() = values.Trim().Split(","c)
Dim fullitems As String
For Each s As String In DocNum
  Dim files() As String = Directory.GetFiles("\\folder path" & s)
          If files.Length > 0 Then
            For i As Integer = 0 To files.Length - 1
                fullitems = files(i).ToString
            Next i
        End If
  Next

Any advice or direction on how to go in adding documents from a folder to a zipfile folder in .net with vb is appreciated!


Solution

  • I want to create a zip folder and add existing files (in this case documents) to the .zip folder, is that possible?

    Yes it is possible. First you need to add a few references to your project.

    • System.IO.Compression
    • System.IO.Compression.FileSystem

    Next, add these Import statements to your class file.

     Imports System.IO
     Imports System.IO.Compression
    

    I used a button click event to do this, but you can put anywhere you would like to...

    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Using modFile As ZipArchive = ZipFile.Open("ZIP PATH HERE", ZipArchiveMode.Update)
                modFile.CreateEntryFromFile("FILE YOU WANT TO ADD", "ENTRY NAME")
            End Using
        End Sub