- package osm.jp.gpx;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.util.zip.ZipEntry;
- import java.util.zip.ZipInputStream;
-
- public class UnZip {
-
- /**
- * Zipファイルを展開します
- * @param aZipFile zipファイル
- * @param aOutDir 出力先ディレクトリ
- * @throws java.io.IOException
- */
- public static void decode(File aZipFile, String aOutDir) throws IOException {
- FileInputStream fileIn = null;
- FileOutputStream fileOut = null;
- ZipInputStream zipIn = null;
-
- try {
- File outDir = new File(aOutDir);
- outDir.mkdirs();
-
- fileIn = new FileInputStream(aZipFile);
- zipIn = new ZipInputStream(fileIn);
-
- ZipEntry entry = null;
- while ((entry = zipIn.getNextEntry()) != null) {
- if (entry.isDirectory()) {
- String relativePath = entry.getName();
- outDir = new File(outDir, relativePath);
- outDir.mkdirs();
- }
- else {
- String relativePath = entry.getName();
- File outFile = new File( outDir, relativePath );
-
- File parentFile = outFile.getParentFile();
- parentFile.mkdirs();
-
- fileOut = new FileOutputStream( outFile );
-
- byte[] buf = new byte[ 256 ];
- int size = 0;
- while ((size = zipIn.read(buf)) > 0){
- fileOut.write(buf, 0, size);
- }
- fileOut.close();
- fileOut = null;
- }
- zipIn.closeEntry();
- }
- }
- catch (IOException e) {
- e.printStackTrace();
- }
- finally {
- if (fileIn != null) {
- try {
- fileIn.close();
- }
- catch (IOException e) {}
- }
- if (fileOut != null) {
- try {
- fileOut.close();
- }
- catch(IOException e) {}
- }
- zipIn.close();
- }
- }
- }