2010-06-03

Bio Hazard Outbreak File 2 / Resident Evil Outbreak File 2 咆哮 (Wild Things) SP Items

「咆哮」SP Item 的獲得條件及地方

利用 Java 將 Zip 格式解壓縮 (Use Java to decompress a ZIP file)

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 static void decompress(File source, File destination) throws IOException{
    if (!destination.exists() || destination.isDirectory()){
        destination.mkdirs();
        ZipInputStream zis = new ZipInputStream(new FileInputStream(source));
        byte[] buffer = new byte[1024];
        for (ZipEntry zip; (zip = zis.getNextEntry()) != null;){
            File file = new File(destination, zip.getName());
            if (zip.isDirectory()){
                file.mkdirs();
            } else {
                FileOutputStream fos = new FileOutputStream(file);
                for (int length; (length = zis.read(buffer)) > 0;){
                    fos.write(buffer, 0, length);
                }
                fos.close();
            }
            zis.closeEntry();
        }
        zis.close();
    }
}

利用 Java 將檔案與資料夾壓縮成 Zip 格式 (Use Java to compress file(s) or directory(ies) as ZIP format)

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.Deflater;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public static void compress(File source, File destination) throws IOException{
    compress(source, destination, null, Deflater.DEFAULT_COMPRESSION);
}

public static void compress(File source, File destination, String comment, int level) throws IOException{
    ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(destination));
    zos.setComment(comment);
    zos.setLevel(level);
    compress(zos, source.getParent(), source);
    zos.flush();
    zos.close();
}

private static void compress(ZipOutputStream zos, String rootpath, File source) throws IOException{
    String filename = source.toString().substring(rootpath.length() + 1);
    if (source.isFile()){
        zos.putNextEntry(new ZipEntry(filename));
        FileInputStream fis = new FileInputStream(source);
        byte[] buffer = new byte[1024];
        for (int length; (length = fis.read(buffer)) > 0;){
            zos.write(buffer, 0, length);
        }
        fis.close();
        zos.closeEntry();
    } else if (source.isDirectory()){
        zos.putNextEntry(new ZipEntry(filename + "/"));
        zos.closeEntry();
        File[] files = source.listFiles();
        for (File file : files){
            compress(zos, rootpath, file);
        }
    }
}