Compress and Uncompress in Java
整理自: The Java Developers Almanac 1.4
Compressing a File in the GZIP Format:
Uncompressing a File in the GZIP Format:
Creating a ZIP File:
Listing the Contents of a ZIP File:
Retrieving a Compressed File from a ZIP File:
Compressing a File in the GZIP Format:
try
?{
???? // ?Create?the?GZIP?output?stream
????String?outFilename? = ? " outfile.gzip " ;
????GZIPOutputStream?out? = ? new ?GZIPOutputStream( new ?FileOutputStream(outFilename));
???? // ?Open?the?input?file
????String?inFilename? = ? " infilename " ;
????FileInputStream?in? = ? new ?FileInputStream(inFilename);
???? // ?Transfer?bytes?from?the?input?file?to?the?GZIP?output?stream
???? byte []?buf? = ? new ? byte [ 1024 ];
???? int ?len;
???? while ?((len? = ?in.read(buf))? > ? 0 )?{
????????out.write(buf,? 0 ,?len);
????}
????in.close();
???? // ?Complete?the?GZIP?file
????out.finish();
????out.close();
}? catch ?(IOException?e)?{
}
???? // ?Create?the?GZIP?output?stream
????String?outFilename? = ? " outfile.gzip " ;
????GZIPOutputStream?out? = ? new ?GZIPOutputStream( new ?FileOutputStream(outFilename));
???? // ?Open?the?input?file
????String?inFilename? = ? " infilename " ;
????FileInputStream?in? = ? new ?FileInputStream(inFilename);
???? // ?Transfer?bytes?from?the?input?file?to?the?GZIP?output?stream
???? byte []?buf? = ? new ? byte [ 1024 ];
???? int ?len;
???? while ?((len? = ?in.read(buf))? > ? 0 )?{
????????out.write(buf,? 0 ,?len);
????}
????in.close();
???? // ?Complete?the?GZIP?file
????out.finish();
????out.close();
}? catch ?(IOException?e)?{
}
Uncompressing a File in the GZIP Format:
try
?{
???? // ?Open?the?compressed?file
????String?inFilename? = ? " infile.gzip " ;
????GZIPInputStream?in? = ? new ?GZIPInputStream( new ?FileInputStream(inFilename));
???? // ?Open?the?output?file
????String?outFilename? = ? " outfile " ;
????OutputStream?out? = ? new ?FileOutputStream(outFilename);
???? // ?Transfer?bytes?from?the?compressed?file?to?the?output?file
???? byte []?buf? = ? new ? byte [ 1024 ];
???? int ?len;
???? while ?((len? = ?in.read(buf))? > ? 0 )?{
????????out.write(buf,? 0 ,?len);
????}
???? // ?Close?the?file?and?stream
????in.close();
????out.close();
}? catch ?(IOException?e)?{
}
???? // ?Open?the?compressed?file
????String?inFilename? = ? " infile.gzip " ;
????GZIPInputStream?in? = ? new ?GZIPInputStream( new ?FileInputStream(inFilename));
???? // ?Open?the?output?file
????String?outFilename? = ? " outfile " ;
????OutputStream?out? = ? new ?FileOutputStream(outFilename);
???? // ?Transfer?bytes?from?the?compressed?file?to?the?output?file
???? byte []?buf? = ? new ? byte [ 1024 ];
???? int ?len;
???? while ?((len? = ?in.read(buf))? > ? 0 )?{
????????out.write(buf,? 0 ,?len);
????}
???? // ?Close?the?file?and?stream
????in.close();
????out.close();
}? catch ?(IOException?e)?{
}
Creating a ZIP File:
//
?These?are?the?files?to?include?in?the?ZIP?file
String[]?filenames? = ? new ?String[]{ " filename1 " ,? " filename2 " };
// ?Create?a?buffer?for?reading?the?files
byte []?buf? = ? new ? byte [ 1024 ];
try ?{
???? // ?Create?the?ZIP?file
????String?outFilename? = ? " outfile.zip " ;
????ZipOutputStream?out? = ? new ?ZipOutputStream( new ?FileOutputStream(outFilename));
???? // ?Compress?the?files
???? for ?( int ?i = 0 ;?i < filenames.length;?i ++ )?{
????????FileInputStream?in? = ? new ?FileInputStream(filenames[i]);
???????? // ?Add?ZIP?entry?to?output?stream.
????????out.putNextEntry( new ?ZipEntry(filenames[i]));
???????? // ?Transfer?bytes?from?the?file?to?the?ZIP?file
???????? int ?len;
???????? while ?((len? = ?in.read(buf))? > ? 0 )?{
????????????out.write(buf,? 0 ,?len);
????????}
???????? // ?Complete?the?entry
????????out.closeEntry();
????????in.close();
????}
???? // ?Complete?the?ZIP?file
????out.close();
}? catch ?(IOException?e)?{
}
String[]?filenames? = ? new ?String[]{ " filename1 " ,? " filename2 " };
// ?Create?a?buffer?for?reading?the?files
byte []?buf? = ? new ? byte [ 1024 ];
try ?{
???? // ?Create?the?ZIP?file
????String?outFilename? = ? " outfile.zip " ;
????ZipOutputStream?out? = ? new ?ZipOutputStream( new ?FileOutputStream(outFilename));
???? // ?Compress?the?files
???? for ?( int ?i = 0 ;?i < filenames.length;?i ++ )?{
????????FileInputStream?in? = ? new ?FileInputStream(filenames[i]);
???????? // ?Add?ZIP?entry?to?output?stream.
????????out.putNextEntry( new ?ZipEntry(filenames[i]));
???????? // ?Transfer?bytes?from?the?file?to?the?ZIP?file
???????? int ?len;
???????? while ?((len? = ?in.read(buf))? > ? 0 )?{
????????????out.write(buf,? 0 ,?len);
????????}
???????? // ?Complete?the?entry
????????out.closeEntry();
????????in.close();
????}
???? // ?Complete?the?ZIP?file
????out.close();
}? catch ?(IOException?e)?{
}
Listing the Contents of a ZIP File:
try
?{
???? // ?Open?the?ZIP?file
????ZipFile?zf? = ? new ?ZipFile( " filename.zip " );
???? // ?Enumerate?each?entry
???? for ?(Enumeration?entries? = ?zf.entries();?entries.hasMoreElements();)?{
???????? // ?Get?the?entry?name
????????String?zipEntryName? = ?((ZipEntry)entries.nextElement()).getName();
????}
}? catch ?(IOException?e)?{
}
???? // ?Open?the?ZIP?file
????ZipFile?zf? = ? new ?ZipFile( " filename.zip " );
???? // ?Enumerate?each?entry
???? for ?(Enumeration?entries? = ?zf.entries();?entries.hasMoreElements();)?{
???????? // ?Get?the?entry?name
????????String?zipEntryName? = ?((ZipEntry)entries.nextElement()).getName();
????}
}? catch ?(IOException?e)?{
}
Retrieving a Compressed File from a ZIP File:
try
?{
???? // ?Open?the?ZIP?file
????String?inFilename? = ? " infile.zip " ;
????ZipInputStream?in? = ? new ?ZipInputStream( new ?FileInputStream(inFilename));
???? // ?Get?the?first?entry
????ZipEntry?entry? = ?in.getNextEntry();
???? // ?Open?the?output?file
????String?outFilename? = ? " o " ;
????OutputStream?out? = ? new ?FileOutputStream(outFilename);
???? // ?Transfer?bytes?from?the?ZIP?file?to?the?output?file
???? byte []?buf? = ? new ? byte [ 1024 ];
???? int ?len;
???? while ?((len? = ?in.read(buf))? > ? 0 )?{
????????out.write(buf,? 0 ,?len);
????}
???? // ?Close?the?streams
????out.close();
????in.close();
}? catch ?(IOException?e)?{
}
???? // ?Open?the?ZIP?file
????String?inFilename? = ? " infile.zip " ;
????ZipInputStream?in? = ? new ?ZipInputStream( new ?FileInputStream(inFilename));
???? // ?Get?the?first?entry
????ZipEntry?entry? = ?in.getNextEntry();
???? // ?Open?the?output?file
????String?outFilename? = ? " o " ;
????OutputStream?out? = ? new ?FileOutputStream(outFilename);
???? // ?Transfer?bytes?from?the?ZIP?file?to?the?output?file
???? byte []?buf? = ? new ? byte [ 1024 ];
???? int ?len;
???? while ?((len? = ?in.read(buf))? > ? 0 )?{
????????out.write(buf,? 0 ,?len);
????}
???? // ?Close?the?streams
????out.close();
????in.close();
}? catch ?(IOException?e)?{
}
posted on 2008-06-03 23:02 zJun's帛羅閣 閱讀(1356) 評論(1) 編輯 收藏 所屬分類: Java基礎