2011-01-04 20 views
0

Ich habe Datei wie "Sample.bak" und wenn ich es komprimiere, um "Sample.zip" zu verlieren, verliere ich die Dateierweiterung in der Zip-Datei, die ich beim Öffnen der komprimierten Datei I finde "Sample" ohne jegliche Erweiterung.Problem beim Komprimieren von Dateien mit vb.net

Ich benutze diesen Code:

Dim name As String = Path.GetFileName(filePath).Replace(".Bak", "") 
Dim source() As Byte = System.IO.File.ReadAllBytes(filePath) 
Dim compressed() As Byte = ConvertToByteArray(source) 
System.IO.File.WriteAllBytes(destination & name & ".Bak" & ".zip", compressed) 

Oder mit diesem Code:

Public Sub cmdCompressFile(ByVal FileName As String) 

    'Stream object that reads file contents 
    Dim streamObj As Stream = New StreamReader(FileName).BaseStream 

    'Allocate space in buffer according to the length of the file read 
    Dim buffer(streamObj.Length) As Byte 

    'Fill buffer 
    streamObj.Read(buffer, 0, buffer.Length) 
    streamObj.Close() 

    'File Stream object used to change the extension of a file 
    Dim compFile As System.IO.FileStream = File.Create(Path.ChangeExtension(FileName, "zip")) 

    'GZip object that compress the file 
    Dim zipStreamObj As New GZipStream(compFile, CompressionMode.Compress) 

    'Write to the Stream object from the buffer 
    zipStreamObj.Write(buffer, 0, buffer.Length) 
    zipStreamObj.Close() 

End Sub 

bitte ich brauche die Datei zu komprimieren, ohne innerhalb komprimierte Datei Dateierweiterung zu verlieren.

Dank,

Antwort

3

GZipStream komprimiert einen Strom von Bytes, es tut nicht mehr als das. Es werden keine Dateiinformationen in den Stream eingebettet, Sie müssen sie also irgendwo einbetten.

Die einfachste Möglichkeit, den Dateinamen wiederherzustellen, besteht darin, ihn mit dem ursprünglichen Namen zu benennen, z. Beispiel.bak.zip.

Wenn das nicht funktioniert, können Sie SharpZipLib (samples here) verwenden, die das Einbetten der Dateiinformationen für Sie übernimmt.

Wenn Sie möchten, gehen Sie nicht, dass entweder von thoes können Sie entweder Ihre eigenen Dateiformat erstellen und betten Sie die Info-Datei oder Sie können die standard gzip format

versuchen und implementieren
Verwandte Themen