Hi,
ich zeuge mit java.io.* ein Zip-Archiv. Nach dem Packen ist die erzeugte Datei unwesentlich kleiner als die manuell gepackte. Die Kompressionrate ist auf 0 gesetzt.
Hauptbestandteil des Archives sind XML-Dokumente, die haben zwar die gleiche Größe, wie die ungepackten, aber sind inhaltslos bzw. zeigen nur Kästchen an.
Hier ist der Code:
Bis dann Java?
ich zeuge mit java.io.* ein Zip-Archiv. Nach dem Packen ist die erzeugte Datei unwesentlich kleiner als die manuell gepackte. Die Kompressionrate ist auf 0 gesetzt.
Hauptbestandteil des Archives sind XML-Dokumente, die haben zwar die gleiche Größe, wie die ungepackten, aber sind inhaltslos bzw. zeigen nur Kästchen an.
Hier ist der Code:
Code:
package gui;
import java.io.*;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
public class ZipFiles {
private ZipOutputStream cpZipOutputStream = null;
public String strSource = "c:/temp/zip";
public String strTarget = "c:/temp/all.zip";
private static long size = 0;
private static int numOfFiles = 0;
public static final int STORED = ZipEntry.STORED;
public void zip(){
try {
File cpFile = new File (strSource);
if (!cpFile.isFile() && !cpFile.isDirectory() ) {
System.out.println("\nSource file/directory Not Found!");
return;
}
FileOutputStream fos = new FileOutputStream(strTarget);
cpZipOutputStream = new ZipOutputStream(fos);
cpZipOutputStream.setLevel(0);
zipFiles( cpFile);
cpZipOutputStream.finish();
cpZipOutputStream.close();
} catch (Exception e){
e.printStackTrace();
}
}
private void zipFiles(File cpFile) {
if (cpFile.isDirectory()) {
File [] fList = cpFile.listFiles() ;
for (int i=0; i< fList.length; i++){
zipFiles(fList[i]) ;
}
} else {
try {
size += cpFile.length();
numOfFiles++;
String strAbsPath = cpFile.getPath();
String strZipEntryName = strAbsPath.substring(strSource.length(), strAbsPath.length());
byte[] b = new byte[ (int)(cpFile.length()) ];
ZipEntry cpZipEntry = new ZipEntry(strZipEntryName);
cpZipOutputStream.putNextEntry(cpZipEntry );
cpZipOutputStream.write(b, 0, (int)cpFile.length());
cpZipOutputStream.closeEntry();
} catch (Exception e) {
e.printStackTrace();
}
}
}
}
Bis dann Java?