|
@@ -9,6 +9,7 @@ package de.nplusc.izc.tools.IOtools;
|
|
|
* @author LH
|
|
|
*/
|
|
|
import de.nplusc.izc.tools.baseTools.Tools;
|
|
|
+import java.awt.EventQueue;
|
|
|
import java.io.BufferedInputStream;
|
|
|
import java.io.File;
|
|
|
import java.io.FileInputStream;
|
|
@@ -47,12 +48,20 @@ public class ZipFileHandler
|
|
|
* @param outDir wohin gezippt werden soll
|
|
|
* @param monitorBar fprs monitoring via GUI;kann auch null sein
|
|
|
*/
|
|
|
+
|
|
|
public void extractAllToDiskWithMonitoringProgressbar(String outDir, JProgressBar monitorBar)
|
|
|
{
|
|
|
if (monitorBar == null)
|
|
|
{
|
|
|
monitorBar = new JProgressBar();//Dummy-Bar um NPXe zu stoppen
|
|
|
}
|
|
|
+ extractAllToDiskWithMonitoringProgressbarImpl(outDir, monitorBar);
|
|
|
+ }
|
|
|
+
|
|
|
+ private int promlilleDone=0;
|
|
|
+ private void extractAllToDiskWithMonitoringProgressbarImpl(String outDir, final JProgressBar monitorBar)
|
|
|
+ {
|
|
|
+
|
|
|
ArrayList<ZipEntry> data = new ArrayList<>();
|
|
|
Enumeration<ZipEntry> tmp = (Enumeration<ZipEntry>) zipFile.entries();
|
|
|
while (tmp.hasMoreElements())
|
|
@@ -61,7 +70,7 @@ public class ZipFileHandler
|
|
|
}
|
|
|
long completeSize = 0;
|
|
|
long bytesRead = 0;
|
|
|
- int PromlilleDone = 0;
|
|
|
+ //int PromlilleDone = 0;
|
|
|
for (ZipEntry entry : data)
|
|
|
{
|
|
|
completeSize += entry.getSize();
|
|
@@ -118,16 +127,26 @@ public class ZipFileHandler
|
|
|
bytesRead += chunkSize;
|
|
|
Tools.DebugHelperPrint(bytesRead+"", true, "Toolkit.enableFinerDebug");
|
|
|
bytesSinceLastPbarUpdate += chunkSize;
|
|
|
- int oldPbarVal = monitorBar.getValue();
|
|
|
- PromlilleDone = (int) (((float) bytesRead / (float) completeSize) * (float) 1000);
|
|
|
- if (PromlilleDone > oldPbarVal && bytesSinceLastPbarUpdate > 100000)//maximales update alle 100 kb
|
|
|
+ Tools.DebugHelperPrint(bytesSinceLastPbarUpdate+"", true, "Toolkit.enableFinerDebug");
|
|
|
+ //int oldPbarVal = ;
|
|
|
+ promlilleDone = (int) (((float) bytesRead / (float) completeSize) * (float) 1000);
|
|
|
+ if (bytesSinceLastPbarUpdate > 100000)//maximales update alle 100 kb
|
|
|
{
|
|
|
- Tools.DebugHelperPrint(PromlilleDone+"", true, "Toolkit.enableCoreDebug");
|
|
|
- monitorBar.setValue(PromlilleDone);
|
|
|
+ Tools.DebugHelperPrint(promlilleDone+"", true, "Toolkit.enableCoreDebug");
|
|
|
+ EventQueue.invokeLater(new
|
|
|
+ Runnable()
|
|
|
+ {
|
|
|
+ public void run()
|
|
|
+ {
|
|
|
+ if(promlilleDone > monitorBar.getValue())
|
|
|
+ monitorBar.setValue(promlilleDone);
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
bytesSinceLastPbarUpdate = 0;//Zähler resetten
|
|
|
}
|
|
|
}
|
|
|
- monitorBar.setValue(PromlilleDone);//am ende jeder datei auch aktulisieren
|
|
|
+ monitorBar.setValue(promlilleDone);//am ende jeder datei auch aktulisieren
|
|
|
bytesSinceLastPbarUpdate = 0;//Zähler resetten
|
|
|
bis.close(); //close BufferedInputStream
|
|
|
fos.close();
|