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;
}
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
Posta un commento