Hallo Axel
Danke für Deine rasche Antwort. Ich glaube ich stelle mal den code rein, damit Du sehen kannst, wie im moment läuft.
Aus dem Agent heraus:
'File zippen
Set js_zip = New JAVASESSION
Set zipClass_zip = js_zip.GetClass("ZipFile")
Set zipFileObject_zip = zipClass_zip.CreateObject
varZipFile = docProfile.NewZipFileName(0) 'Name des neuen Zip-Files
varFilePath = docProfile.ScratchDir(0) 'Ziel-Root-Verzeichniss für "gezippte" File
varDirPreFix = doc.UniversalID 'UNID des zu verarbeiteten Emails (Name des verzeichnisses)
'Calling the zip function
returnCode_zip = zipFileObject_zip.ZipMyFiles(varZipFile, varFilePath, varDirPreFix)
Die Klasse ZipFile:
import java.io.*;
import java.util.zip.*;
public class ZipFile {
public String zipMyFiles(String zipFile, String FilePath, String DirPreFix) {
File file = new File(FilePath + "/" + DirPreFix + "/newtexttmp");
try {
String zipFileName = FilePath + "/" + DirPreFix + "/" + zipFile;
System.out.println(zipFileName);
ZipOutputStream zos = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFileName + ".zip")));
File f = file;
fileWalk(f, zos);
zos.finish();
zos.close();
} catch (IOException e) {
e.printStackTrace();
};
return "OK";
};
public static void fileWalk(File f, ZipOutputStream zos) {
if (f.isDirectory()) {
File[] files = f.listFiles();
for (int i = 0; i < files.length; i++) {
fileWalk(files[i], zos);
}
} else {
try {
ZipEntry entry = new ZipEntry(f.getCanonicalPath());
zos.putNextEntry(entry);
BufferedInputStream br = new BufferedInputStream(new FileInputStream(f));
byte[] buffer = new byte[4096];
int len;
while ((len = br.read(buffer)) > 0) {
zos.write(buffer);
zos.flush();
}
zos.closeEntry();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
};
};
};
}
Die Problematik ist nun die, dass das Objek
File z.B. den Inhalt
d:\scratch\acd\D265F7A4EF6922F2C1256FBA0047A0F8\newtexttmp\ hat. Jetzt sollen alle Files, die sich in diesem Verzeichnis befinden in das zu erstellende Zip-File mit dem Namen
d:\scratch\acd\D265F7A4EF6922F2C1256FBA0047A0F8\ACD Statistik.zip eingepackt werden. Aber eben
ohne den Pfad (
d:\scratch\acd\D265F7A4EF6922F2C1256FBA0047A0F8\newtexttmp\Den Directory-Aufbau muss ich so machen, um einer Verwechslung der Files vorzubeugen. Denn die die Files im Verzeichnis
\newtexttmp können gleiche Namen haben. (Der Agent arbeitet mehrere NotesDokumente ab.) Die etwas kryptische Verzeichnis-Bezeichnung ist die UniversalID des sich in Arbeit befindlichen NotesDokumentes.
Ich weiss, hört sich alles extrem kompliziert an, aber isses eigenglich gar nicht. Wenn man verstanden hat, was ich sagen will.
Gruss und vielen Dank
Hampa