package app.create.rpg.task;
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.ZipOutputStream;
import android.os.Parcel;
public class TaskCompressFolder extends Task {
private String mDir, mTo;
public TaskCompressFolder(String dir, String to) {
mDir = dir; mTo = to;
}
public TaskCompressFolder(Parcel source) {
super(source);
mDir = source.readString();
mTo = source.readString();
}
private void compress (String path, ZipOutputStream zos) throws IOException {
File f = new File(path);
ZipEntry ze = new ZipEntry(f.isDirectory() ? path + "/" : path);
ze.setSize(f.length());
ze.setTime(f.lastModified());
zos.putNextEntry(ze);
if (f.isFile()) {
FileInputStream fis = new FileInputStream(f);
byte[] buf = new byte[4096];
int read;
// long size = ze.getSize(), total;
mMessage = mService.getString(0);
while ((read = fis.read(buf)) > 0) {
zos.write(buf, 0, read);
}
fis.close();
}
zos.closeEntry();
}
@Override
public void run() {
try {
ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(mTo));
compress ("", zos);
zos.close();
} catch (Exception e) {
printException(e);
}
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
super.writeToParcel(dest, flags);
dest.writeString(mDir);
dest.writeString(mTo);
}
public static final TaskCompressFolder EMPTY = new TaskCompressFolder(null, null);
public static final Creator<TaskCompressFolder> CREATOR = new Creator<TaskCompressFolder>() {
public TaskCompressFolder[] newArray(int size) { return new TaskCompressFolder[size]; }
public TaskCompressFolder createFromParcel(Parcel source) { return new TaskCompressFolder(source); }
};
}