no message

This commit is contained in:
2024-10-14 12:14:01 +03:00
parent 3a29898d5f
commit 452c4c7268
466 changed files with 1255 additions and 1100 deletions

View File

@@ -0,0 +1,76 @@
package _VisualDVM.Passes.All;
import _VisualDVM.Utils;
import Common.Passes.Pass;
import java.io.*;
import java.net.URI;
import java.util.Deque;
import java.util.LinkedList;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFolderPass extends Pass {
protected String src;
protected String dst;
@Override
protected boolean canStart(Object... args) throws Exception {
src = (String) args[0];
dst = (String) args[1];
return true;
}
@Override
protected void body() throws Exception {
File directory = new File(src);
int total = Utils.getFilesCount(directory);
String root_name = directory.getName() + "/";
URI base = directory.toURI();
Deque<File> queue = new LinkedList<File>();
queue.push(directory);
OutputStream out = new FileOutputStream(dst);
Closeable res = out;
int count = 0;
try {
ZipOutputStream zout = new ZipOutputStream(out);
res = zout;
while (!queue.isEmpty()) {
directory = queue.pop();
for (File child : directory.listFiles()) {
String name = root_name + base.relativize(child.toURI()).getPath();
// form.ShowMessage1(name);
// form.ShowProgress(total, count, true);
count++;
if (child.isDirectory()) {
queue.push(child);
name = name.endsWith("/") ? name : name + "/";
zout.putNextEntry(new ZipEntry(name));
} else {
zout.putNextEntry(new ZipEntry(name));
InputStream in = new FileInputStream(child);
try {
byte[] buffer = new byte[1024];
while (true) {
int readCount = in.read(buffer);
if (readCount < 0) {
break;
}
zout.write(buffer, 0, readCount);
}
} finally {
in.close();
}
zout.closeEntry();
}
}
}
} finally {
res.close();
}
}
@Override
protected boolean validate() {
return new File(dst).exists();
}
@Override
public String getDescription() {
return "Архивация папки";
}
}