Hvordan Zip filer med SharpZipLib

SharpZipLib er en fil komprimering bibliotek for C # og andre NET programmeringsspråk, og gir funksjoner for håndtering ZIP, GZIP, TAR og BZIP2 formater. Biblioteket har et veldig enkelt grensesnitt, slik at du kan zip en fil med bare noen få funksjonskall. Etter å bygge resten av programmet - forutsatt at prosjektet er noe mer enn et kommandolinje zipping verktøy - inkluderer SharpZipLib biblioteket og lage en suse-funksjon, som deretter kan kalles fra andre steder i koden.

Bruksanvisning

1 Lag funksjonens spissen. Det skal se omtrent slik ut:

public static void Zip (string INNFIL, string utdatafil)

Dette definerer funksjonen navn og parametere. Antar du bruker ovenfor koden nøyaktig slik den er skrevet, vil du være i stand til å kalle funksjonen, komprimere en bestemt fil i en ZIP, som dette:

Zip ( "bilde.jpg", "image.zip");

2 Begynn kroppen av funksjon, erklærte de nødvendige variabler og objektforekomster. Det skal se omtrent slik ut:

{

FileStream fileStreamIn = new FileStream

(Inndatafil, FileMode.Open, FileAccess.Read);

Filestream fileStreamOut = ny Filestream

(Utdatafil, FileMode.Create, FileAccess.Write);

ZipOutputStream zipStreamOut = ny ZipOutputStream (fileStreamOut);

byte [] buffer = ny byte;

ZipEntry entry = ny ZipEntry (Path.GetFileName (INNFIL));

zipOutStream.PutNextEntry (entry);

int størrelse;

Dette skaper to FileStreams for input og output filer, og deretter en ZipOutputStream basert på utgangsFileStream du nettopp erklært. Dette etterfølges av noen variabler for håndtering tall i kjøtt av funksjonen kommer etterpå, og et par for å lagre utdatafilen bane.

3 Skriv kjøtt av funksjon - en "gjør ... mens" loop som leser i data og komprimerer det:

do

{

size = fileStreamIn.Read (buffer, 0, buffer.Length);

zipStreamOut.Write (buffer, 0, størrelse);

} While (størrelse> 0);

Dette vil gå gjennom filen, en byte om gangen, mate data til zipStreamOut er "Write" -funksjonen. Prosessen vil bli gjentatt inntil slutten av filen er nådd og zipping er fullført.

4 Lukk glidelås og fileStreams, og avslutte funksjonen, rydder alt opp:

zipStreamOut.Close();

fileStreamOut.Close ();

fileStreamIn.Close ();

}

Funksjonen er nå fullført og kan brukes i programmet som ønsket.