ZIP di un file senza comprimere tutto il percorso

di il
7 risposte

ZIP di un file senza comprimere tutto il percorso

Buongiorno,

ho un problema con lo zip di un file tramite VbNet.

il codice che utilizzo è:

Dim Zip = New ZipFile("c:\temp\MyZipFile.zip")

Zip.AddFile("c:\temp\prova.csv")

Zip.Save()

Funziona regolarmente ma lo Zip contiene il percorso del File zippato.

Io vorrei trovare nella cartella Temp il file MyZipFile.zip che contiene il file prova.csv, invece trovo la cartella   MyZipFile.zip con \temp\prova.csv

Prima di postare ho cercato nel forum ma non ho trovato roisposta.

Potete darmi un aiuto?

grazie

7 Risposte

  • Re: ZIP di un file senza comprimere tutto il percorso

    26/06/2025 - marcello75 ha scritto:

    il codice che utilizzo è:

    Ma che libreria stai usando? In System.IO.Compression c'è la classe ZipFile ma non espone il metodo AddFile...

    Io l'unica cosa che ho trovato è l'Extension Method CreateEntryFromFile.

  • Re: ZIP di un file senza comprimere tutto il percorso

    Probabilmente sta usando DotNetZip.dll della Ionic

  • Re: ZIP di un file senza comprimere tutto il percorso

    Esatto Sirjo, Se avete un metodo alternativo non esitate a darmelo, io devo risolvere solo questo problema.

    Grazie per il supporto

  • Re: ZIP di un file senza comprimere tutto il percorso

    Guardando in giro ho trovato questa funzione:

    Per zippare un file in VB.NET senza memorizzare il percorso, puoi utilizzare la libreria System.IO.Compression e la classe ZipArchive. La chiave è creare un ZipArchive specificando un flusso di output e poi aggiungere i file senza specificare il percorso completo.

    Ecco un esempio di come farlo:

    Public Sub ZipFiles(ByVal filesToZip() As String, ByVal zipFilePath As String)
            ' Crea un nuovo archivio ZIP
            Using archive As ZipArchive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create)
                For Each filePath In filesToZip
                    ' Ottieni solo il nome del file, senza il percorso
                    Dim fileName As String = Path.GetFileName(filePath)

                    ' Crea una voce nell'archivio
                    Dim entry As ZipArchiveEntry = archive.CreateEntry(fileName)

                    ' Scrivi i dati del file nella voce dell'archivio
                    Using stream As Stream = entry.Open()
                        Using fileStream As FileStream = File.OpenRead(filePath)
                            fileStream.CopyTo(stream)
                        End Using
                    End Using
                Next
            End Using
        End Sub

    Copiando il codice in progetto viene sottolineato l'errore sulla seguente porzione di codice:

     Using archive As ZipArchive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create)

    ERRORE: BC36010: L'operando 'Using' di tipo 'ZipArchive' deve implementare 'System.Idisposable'

    Qualcuno sa aiutarmi?

    Grazie in anticipo

  • Re: ZIP di un file senza comprimere tutto il percorso

    Non usare la using

  • Re: ZIP di un file senza comprimere tutto il percorso

    Lieto di vedere ancora una volta che la IA è messa peggio di me. XD

    27/06/2025 - marcello75 ha scritto:

    viene sottolineato l'errore sulla seguente porzione di codice

    devi avere qualche conflitto nei riferimenti agli assembly perché ZipArchive implementa IDisposable. Cos'hai come Imports in testa al modulo?

  • Re: ZIP di un file senza comprimere tutto il percorso

    27/06/2025 - marcello75 ha scritto:

    Zip.AddFile("c:\temp\prova.csv")

    Modifica la riga in
    Zip.AddFile("c:\temp\prova.csv", "")

    il secondo parametro, se specificato, dice in quale cartella del file ZIP mettere il file

Devi accedere o registrarti per scrivere nel forum
7 risposte