Java uses ZipOutputStream for packaging
Package A single file:
[Java]
Public static void main (String [] args) throws IOException {
File file = new File (d: + File. separator + aaa. java );
File zipFile = new File (d: + File. separator + hello.zip );
InputStream input = new FileInputStream (file );
ZipOutputStream zipOut = new ZipOutputStream (new FileOutputStream (
ZipFile ));
ZipOut. putNextEntry (new ZipEntry (file. getName ()));
// Set comments
ZipOut. setComment (hello );
Int temp = 0;
While (temp = input. read ())! =-1 ){
ZipOut. write (temp );
}
Input. close ();
ZipOut. close ();
}
Package Multiple files:
[Java]
Public static void main (String [] args) throws IOException {
// The folder to be compressed
File file = new File (d: + File. separator + temp );
File zipFile = new File (d: + File. separator + zipFile.zip );
InputStream input = null;
ZipOutputStream zipOut = new ZipOutputStream (new FileOutputStream (
ZipFile ));
ZipOut. setComment (hello );
If (file. isDirectory ()){
File [] files = file. listFiles ();
For (int I = 0; I <files. length; ++ I ){
Input = new FileInputStream (files [I]);
ZipOut. putNextEntry (new ZipEntry (file. getName ()
+ File. separator + files [I]. getName ()));
Int temp = 0;
While (temp = input. read ())! =-1 ){
ZipOut. write (temp );
}
Input. close ();
}
}
ZipOut. close ();
}
We naturally think that since it can be compressed and decompressed, we will use a ZipFile class before talking about decompression. Let's give this example first. Every compressed file in java can be represented by ZipFile.
[Java]
Import java. io. File;
Import java. io. IOException;
Import java.util.zip. ZipFile;
/**
* ZipFile demo
**/
Public class ZipFileDemo {
Public static void main (String [] args) throws IOException {
File file = new File (d: + File. separator + hello.zip );
ZipFile zipFile = new ZipFile (file );
System. out. println (compressed file name: + zipFile. getName ());
}
}
Decompress a single file:
[Java]
Public static void main (String [] args) throws IOException {
File file = new File (d: + File. separator + hello.zip );
File outFile = new File (d: + File. separator + unZipFile.txt );
ZipFile zipFile = new ZipFile (file );
ZipEntry entry = zipFile.getEntry(hello.txt); // hello.txt indicates the name of the file in the compressed package.
InputStream input = zipFile. getInputStream (entry );
OutputStream output = new FileOutputStream (outFile );
Int temp = 0;
While (temp = input. read ())! =-1 ){
Output. write (temp );
}
Input. close ();
Output. close ();
}
Decompress multiple files:
ZipEntry cannot be used when we need to extract multiple files. To perform more complex operations on compressed files, we must use the ZipInputStream class.
[Java]
Public static void main (String [] args) throws IOException {
File file = new File (d: + File. separator + zipFile.zip );
File outFile = null;
ZipFile zipFile = new ZipFile (file );
ZipInputStream zipInput = new ZipInputStream (new FileInputStream (file ));
ZipEntry entry = null;
InputStream input = null;
OutputStream output = null;
While (entry = zipInput. getNextEntry ())! = Null ){
System. out. println (extract + entry. getName () + file); // entry. getName () obtain the file and file path in the compressed package (aaaa/bb.txt)
OutFile = new File (d: + File. separator + entry. getName ());
If (! OutFile. getParentFile (). exists ()){
OutFile. getParentFile (). mkdir ();
}
If (! OutFile. exists ()){
OutFile. createNewFile ();
}
Input = zipFile. getInputStream (entry );
Output = new FileOutputStream (outFile );
Int temp = 0;
While (temp = input. read ())! =-1 ){
Output. write (temp );
}
Input. close ();
Output. close ();
}
}