Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226

    compressione file usando la classe SharpZipLib

    ciao
    sto cercando di creare un file zip usando la classe SharpZipLib

    ho scitto questo codice

    'Definisce la classe del controllo di CRC
    Dim Crc As SharpZipLib.Checksums.Crc32 = New SharpZipLib.Checksums.Crc32

    'Definisce lo stream di output dove scrivere l'archivio zip

    Dim zippa As SharpZipLib.Zip.ZipOutputStream = _
    New SharpZipLib.Zip.ZipOutputStream(System.IO.File.Cre ate("rrr.zip")) 'zippa.SetLevel(9)

    'Dim ZIPPA As ICSharpCode.SharpZipLib.Zip.ZipOutputStream = New ICSharpCode.SharpZipLib.Zip.ZipOutputStream(File.C reate("\\prova\prova1\prova2\prov3a\rrr.zip")



    'Definisce lla variabile che contiene il file che vogliamo zippare
    Dim f As String = "\\prova\prova1\prova2\prov3a\rrr.txt"
    'Definisce una variabile che contiene lo stream del file di origine
    Dim fileaperto As FileStream = System.IO.File.OpenRead(f)
    'Definisce una variabile di tipo byte della grandezza pari alla lunghezza del file originale
    Dim contenitore() As Byte = New Byte(CInt(fileaperto.Length)) {}
    'Questa variabile è molto importante perchè definisce una nuova entry nel file dell'archivio ZIP
    Dim z As SharpZipLib.Zip.ZipEntry = New SharpZipLib.Zip.ZipEntry(f)




    'Mette il contenuto dello stream in un contenitore di byte
    fileaperto.Read(contenitore, 0, contenitore.Length)
    'Imposta la data di compressione.
    z.DateTime = DateTime.Now
    'Imposta la dimensione del file originale
    z.Size = fileaperto.Length + 1
    'Chiude la variabile che contiene il lo stream del file originale
    fileaperto.Close()
    'Azzera la checksum
    Crc.Reset()
    'Imposta un nuovo valore per la checksum che dipende dai byte del file originale
    Crc.Update(contenitore)
    'Imposta il valore della CRC nella compressione
    z.Crc = Crc.Value
    'Inserisce nell?archivio ZIP una nuova entry
    zippa.PutNextEntry(z)
    'Effettua di fatto la compressione del file scrivendo nella nuova entry create al passo precedente il file comrpesso.
    zippa.Write(contenitore, 0, contenitore.Length)
    'Chiude lo stream del file di output e lo svuota dopo aver fisicamente salvato nel file ZIP i risultato della compressione.
    zippa.Finish()
    'Rilascia la variabile.
    zippa.Close()

    funziona l'unico problema è che mi ritorna un file zippato contenente le seguenti cartelle
    prova\prova1\prova2\prov3a\
    ed all'interno il file rrr.txt


    io però ho la neccesita che il file zippato non contenga nessuna sotto cartella ma solo il mio file .txt..........
    come posso fare per fare in modo che estragga solo quello ???? e non tutte le sotto cartelle indicate nel percorso ???

  2. #2
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    utilizzi la classe FileInfo
    per es in c#
    FileInfo finfo = new FileInfo(f)//f->il tuo file //ciao/ciao.txt
    finfo.FileName -> ti ritorna ciao.txt
    dopo nel zipentry.Name utilizzi finfo.FileName
    I got the remedy

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    no non utilizzo quella

    uso la classe Imports System.IO
    che non supporta filename

  4. #4
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    Originariamente inviato da s.ef
    no non utilizzo quella

    uso la classe Imports System.IO
    che non supporta filename
    Ti stò consigliando di utilizzare la classe FileInfo e non intendevo che stai già utilizzando quella
    Cmq, stà sempre dentro il namespace System.IO

    EDIT:la proprità si chiama Name e non FileName
    I got the remedy

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    226
    ho provato ma mi dà errore ...........
    probabilmente è la libreria che uso per il zip che non o supporta...

    se scrivo per esempio:
    Dim fileaperto As FileStream = System.IO.Filename.OpenRead(f)

    mi dice che non è supportato dalla classe System.IO

  6. #6
    Utente di HTML.it L'avatar di albgen
    Registrato dal
    Jun 2005
    Messaggi
    3,249
    questo System.IO.Filename.OpenRead(f) non ha senso!
    FileInfo è la classe! Name è la proprietà di FileInfo
    guarda su msdn la classe FileInfo.

    cmq, capire la differenza tra una classe e una proprietà è una cosa elementare del .net.
    I got the remedy

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.