Hallo zusammen,
ich möchte gerne immer nur den Ordner zippen, den ich angebe.
Das Zippen funktioniert einwandfrei. Allerdings enthält das ZIP-Archiv nun Ordner, (die übergeordnete Ordner meines angegebenen Verzeichnis)
=> Ich möchte aber wirklich nur den Ordner Zippen, den ich angebe.
Bsp: Ordner "test"
Ich bekomme aber "Application/Standalone/test/"
Wie kann ich das machen?
Hier mein Code:
ich möchte gerne immer nur den Ordner zippen, den ich angebe.
Das Zippen funktioniert einwandfrei. Allerdings enthält das ZIP-Archiv nun Ordner, (die übergeordnete Ordner meines angegebenen Verzeichnis)
=> Ich möchte aber wirklich nur den Ordner Zippen, den ich angebe.
Bsp: Ordner "test"
Ich bekomme aber "Application/Standalone/test/"
Wie kann ich das machen?
Hier mein Code:
Java:
public boolean createZIPArchiveFullBackUp(File directory) {
boolean result = false;
byte[] buffer = new byte[8192];
try {
LinkedList<String> fileList = getAllFiles(directory);
// /
String tempFolderPath = System.getProperty("jboss.server.temp.dir");
String path = tempFolderPath + File.separator;
// //
String outFilename = path + "outfile.zip";
FileOutputStream fos = new FileOutputStream(outFilename);
ZipOutputStream zos = new ZipOutputStream(fos);
for (String fileName : fileList) {
FileInputStream fis = new FileInputStream(fileName);
zos.putNextEntry(new ZipEntry(fileName));
int length;
while ((length = fis.read(buffer)) > 0) {
zos.write(buffer, 0, length);
}
zos.closeEntry();
fis.close();
}
zos.close();
fos.close();
result = true;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return result;
}
/**
* Methode legt alle Datei-Pfade in einer LinkedList ab - mit allen
* Unterordnern
*
* @param files
* @return
*/
private static LinkedList<String> getAllFiles(File directory) {
File[] files = directory.listFiles();
LinkedList<String> allFiles = new LinkedList<String>();
for (File file : files) {
if (file.isDirectory()) {
LinkedList<String> moreFiles = getAllFiles(file);
Iterator<String> iterMoreFiles = moreFiles.iterator();
while (iterMoreFiles.hasNext()) {
allFiles.add(iterMoreFiles.next());
}
} else {
allFiles.add(file.getAbsolutePath());
}
}
return allFiles;
}