Compressione sicura con Gzip

Per creare un file zip con java si utilizza no tutte classi gia incorporate in java. Ho deciso di usare Gzip invece che lo zip normale in quanto è un sistema opensource.

Da notare il controllo CheckedOutputStream(s, new Adler32()) che utilizzo come checksum per inviare con maggiore sicurezza file su internet. Si puo utilizzare Adler32 o CRC32.

private static String gzip() {
String rit = "Ok";
File doc=new File("prova.txt");
URL path=null;
try{
// mostriamo il percorso al file
path=doc.toURI().toURL(); //usare solo .toURL è deprecato
System.out.println("Il doc si trova nel percorso" + path);

doc=new File(path.getFile());

//Inizio fase di compressione
FileInputStream fileStream = new FileInputStream(doc);

FileOutputStream s = new FileOutputStream("tosend.gz"); //Definisce come sarà l'output
CheckedOutputStream checksum = new CheckedOutputStream(s, new Adler32()); //Utilizzo di checksum per rilevari errori in trasmissione
GZIPOutputStream zip = new GZIPOutputStream(checksum); //tipo di compressione

//buffer tampone
int lunghezza;
byte[] buffer = new byte[1024];
while ((lunghezza = fileStream.read(buffer)) > 0) //Compressione del file
zip.write(buffer, 0, lunghezza);

//faccio terminare la compressione
zip.finish();
zip.close();
s.close();
fileStream.close();

}catch(Exception e){
System.out.println(e);
rit = e.toString();
}
return rit;
}

Commenti