Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1

    [VB.NET]backup file

    A me serve creare un unico file che contenga una intera cartella più un database(per copia di backup), per questo ho pensato ad un file zip.
    Ho usato:
    1)PowerTCP per la compressione dei file(fatto abbastanza bene, peccato che sia a pagamento).
    2)l'Add-on di Winzip che si usa da riga di comando, ma non ho capito quale sintassi usare(qualcuno conosce la sintassi da usare?).
    Qualcuno sa consigliarmi un componente che possa fare al caso mio, oppure un metodo alternativo per creare una copia di backup dell'archivio???

  2. #2
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    forse ti basta copiare cio' che ti interessa in una cartella e poi tramite WMI (so xp/2000/2003) fare il comprimi che windows mette a disposizione.

    in vb.net non ho idea, in vb6:
    codice:
    Set wmi = GetObject("winmgmts:\root\cimv2")
    Set objs = wmi.ExecQuery("Select * from Win32_Directory where name = 'c:\\backup'")
    For Each obj in objs
        obj.Compress
    Next
    per farlo funzionare in vb.net:
    codice:
    Dim wmiQuery As Object = Microsoft.VisualBasic.GetObject("winmgmts:\root\cimv2")
    
    Dim objs As Object = wmiQuery.ExecQuery("Select * from Win32_Directory where name = 'c:\\backup'")
    
    For Each obj As Object In objs
        obj.Compress()
    Next
    prova un po' se ti serve
    Ans.

  3. #3
    Grazie per la risposta ma non riesco a capire il funzionamento del codice, dove devo inserire il percorso della cartella da comprimere?
    ed il nome del file compresso? forse c'è un percorso di default dove vengono salvati i files compressi?
    Eppure lo sento lavorare il pc... :master:

  4. #4
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    798
    invece di c:\\backup metti la path della tua cartella... dovresti creare una cartella fare la copia dei file da fare il backup all'interno, poi avviare la compressione

    credo
    Ans.

  5. #5
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    cerca ICSharpCode.SharpZipLib.dll su google ,è una classe che ti permette di comprimere in qualunque formato tu voglia,pensa è la stessa classe che poi hanno integrato con vb.net 2005.A corredo trovi tutti i sorgenti.

  6. #6
    Grazie per gli interventi
    Incuriosito dalla SharpZipLib l'ho provata seguendo le istruzioni che ho trovato al link www.dotnethell.it/articles/Ziplib.aspx
    il mio codice è:
    Dim s As New ZipOutputStream(File.Create(PercorsoFileBackup.Tex t & ".zip"))
    Dim fs As FileStream = File.OpenRead(application.startpath & "\archivio.mdb")
    Dim buffer(fs.Length) As Byte
    fs.Read(buffer, 0, buffer.Length)

    Dim myEntry As New ZipEntry(application.startpath & "\archivio.mdb")
    s.PutNextEntry(myEntry)
    s.Write(buffer, 0, buffer.Length)

    mi viene creato un file zip, ma è danneggiato...vuoto
    ho sbagliato qualche passaggio?
    grazie

  7. #7
    Alla fine ci sono riuscito
    Vorrei segnalare un altro sito che spiega molto meglio, rispetto a DotNetHell che tralascia molte cose a livello di codice(non chiude lo stream, ecco perché il file mi risultava danneggiato!), come usare questa libreria, il link è
    http://www.boschin.it/blogs/radicalm...arpziplib.aspx
    Questo è il codice al quale sono arrivato per comprimere un'intera cartella più un file che non appartiene alla cartella(archivio.mdb):

    codice:
     Dim s As New ZipOutputStream(File.Create(PercorsoBackupFile))
                Dim fs As FileStream
                Dim buffer() As Byte
    Dim myEntry As New ZipEntry(Application.StartupPath & "\archivio.mdb")
    
                s.SetLevel(CompressLevel)
    
                fs = File.OpenRead(Application.StartupPath & "\archivio.mdb")
                ReDim buffer(fs.Length)
                'Leggo il buffer
                fs.Read(buffer, 0, buffer.Length)
    
                myEntry = New ZipEntry(Application.StartupPath & "\archivio.mdb")
                'Aggiungo la entry al file zip
                s.PutNextEntry(myEntry)
                'Scrivo il buffer
                s.Write(buffer, 0, buffer.Length)
                s.CloseEntry() 'l'ho messo io questo
                fs.Close() 
    
                Dim fi As FileInfo = New FileInfo(Application.StartupPath & "\archivio\")
                Dim di As DirectoryInfo = fi.Directory
                Dim fsi As FileSystemInfo() = di.GetFiles()
    
                For Each info As FileSystemInfo In fsi
                    fs = File.OpenRead(Application.StartupPath & "\archivio\" & info.Name)
                    ReDim buffer(fs.Length)
                    'Leggo il buffer
                    fs.Read(buffer, 0, buffer.Length)
    
                    myEntry = New ZipEntry(Application.StartupPath & "\archivio\" & info.Name)
                    'Aggiungo la entry al file zip
                    s.PutNextEntry(myEntry)
                    'Scrivo il buffer
                    s.Write(buffer, 0, buffer.Length)
                    s.CloseEntry() 'l'ho messo io questo
                Next
    
                s.Finish() 'chiudo lo stream
                s.Close() 'chiudo il file
    Qualsiasi problema sono a completa disposizione
    Ps. Ovviamente il tutto funziona se si mette la Dll in questione tra i riferimenti e si usa la direttiva
    Imports ICSharpCode.SharpZipLib.Zip
    Adesso mi mana la decompressione...non appena ci riesco mi rifaccio vivo.

  8. #8
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    scusa ma nel file che mi sono scaricato io ,ci sono tutti i sorgenti per comprimere/decomprimere...controlla bene.

  9. #9
    Ah, mi era sfuggito il secondo link che conteneva pure i progetti di esempio(avevo scaricato solo il file che conteneva la Dll)...
    Per la decompressione l'unico codice di esempio è quello scritto in C# o c'è anche la versione in Vb(meglio chiedere visto che non ci vedo molto bene )?

  10. #10
    Vabbé per completezza posto anche la soluzione a cui sono arrivato per decomprimere(Vb.Net):
    codice:
      Dim s As New ZipInputStream(File.OpenRead(percorsoFileDiBackup))
    
            Dim theEntry As ZipEntry
    
            Dim mycontrol As Boolean
            mycontrol = True
            '//ciclo fino a quando non trovo una entry
            theEntry = s.GetNextEntry()
    
            While Not theEntry Is Nothing
                '//nel caso non esista una entry successiva esco dal ciclo
                If (theEntry Is Nothing) Then
                    mycontrol = False
                    Exit While
                End If
    
                Console.WriteLine(theEntry.Name)
    
                Dim directoryName As String = Path.GetDirectoryName(theEntry.Name)
                Dim fileName As String = Path.GetFileName(theEntry.Name)
    
                ' create directory
                Directory.CreateDirectory(directoryName)
    
                If fileName <> [String].Empty Then
                    Dim streamWriter As FileStream = File.Create(theEntry.Name)
    
                    Dim size As Integer = 2048
                    Dim data(2048) As Byte
                    While True
                        size = s.Read(data, 0, data.Length)
                        If size > 0 Then
                            streamWriter.Write(data, 0, size)
                        Else
                            Exit While
                        End If
                    End While
    
                    streamWriter.Close()
                End If
    
                theEntry = s.GetNextEntry()
    
            End While
            s.Close()
    Ringrazio ans ed in particolar modo cassano

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.