Kompletten Order Zippen

Status
Nicht offen für weitere Antworten.

skelle

Mitglied
Ich schreibe gerade eine Art Dateiverwaltungstool. Der Client connected zu einem Server und kann dann Dateien hoch und runterladen.

Ich bin gerade bei der Implementierung der Dateiübertragung und hänge gerade etwas =/

Angefangen habe ich mit dem einfachen versenden von Dateien - klappt :)
Danach habe ich es geschafft, das alle Dateien aus einem Ordner übertragen werden...
Jetzt wollte ich einen gesamten Ordner verschicken.

Hab denn das Forum durchforstet und auch google benutzt und bin zu dem Entschluss gekommen, dass es wohl am leichtesten ist den Oberordner der verschickt werden soll in eine Zip Datei zu tun und diese beim Server wieder zu entpacken.

Aber ich habe noch nich herausgefunden wie ich einen Order Zippe sodass die OrdnerStruktur erhalten bleibt und dann beim Server exakt aussieht wie beim Clienten =/

Oder gibt es eine leichtere Methode dem Server die OrdnerStruktur zu übermitteln?

Im Moment sammle ich erst alle zu übertragenen File Objekte in einer liste und übergebe dieser der Methode zum senden.

mfg skelle
 

DocRandom

Top Contributor
..komisch, ich hab nedmal 1 Minute gesucht!
Aber weil Advent ist will ich mal nicht so sein:
Code:
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class FolderZiper {
  public static void main(String[] a) throws Exception {
    zipFolder("c:\\a", "c:\\a.zip");
  }

  static public void zipFolder(String srcFolder, String destZipFile) throws Exception {
    ZipOutputStream zip = null;
    FileOutputStream fileWriter = null;

    fileWriter = new FileOutputStream(destZipFile);
    zip = new ZipOutputStream(fileWriter);

    addFolderToZip("", srcFolder, zip);
    zip.flush();
    zip.close();
  }

  static private void addFileToZip(String path, String srcFile, ZipOutputStream zip)
      throws Exception {

    File folder = new File(srcFile);
    if (folder.isDirectory()) {
      addFolderToZip(path, srcFile, zip);
    } else {
      byte[] buf = new byte[1024];
      int len;
      FileInputStream in = new FileInputStream(srcFile);
      zip.putNextEntry(new ZipEntry(path + "/" + folder.getName()));
      while ((len = in.read(buf)) > 0) {
        zip.write(buf, 0, len);
      }
    }
  }

  static private void addFolderToZip(String path, String srcFolder, ZipOutputStream zip)
      throws Exception {
    File folder = new File(srcFolder);

    for (String fileName : folder.list()) {
      if (path.equals("")) {
        addFileToZip(folder.getName(), srcFolder + "/" + fileName, zip);
      } else {
        addFileToZip(path + "/" + folder.getName(), srcFolder + "/" + fileName, zip);
      }
    }
  }
}
..ungetestet ^^

lg
DocRandom
 

skelle

Mitglied
@DocRandom: ok danke, denn habsch mich wohl bissle doof angstelt beim suchen :roll:

@hoax: ich will aber ne zip schreiben die ZipFile Klasse handelt nur vom lesen wie ich es aus der Doku entnehme

mfg
 
G

Guest

Gast
skelle hat gesagt.:
@DocRandom: ok danke, denn habsch mich wohl bissle doof angstelt beim suchen :roll:

@hoax: ich will aber ne zip schreiben die ZipFile Klasse handelt nur vom lesen wie ich es aus der Doku entnehme

mfg

Quatsch, mit ZipFile kann man Dateien in ein gepacktes Archiv schreiben und daraus lesen.
 

HoaX

Top Contributor
@Gast: lies die apidoc?!

@skelle: hast recht, meinte eigentlich ZipOutputStream. man braucht das ja so selten ...
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben