Klassenbiliothek fuer Dateiverwaltung
ulrich
19 hours ago 7e5166a55fa459deab5579f764b7bb34719e5ec9
Dokumentation in Arbeit: Inflator fertig dokumentiert, kleinere Anpassungen
3 files modified
58 ■■■■■ changed files
src/de/uhilger/fm/Deflator.java 15 ●●●● patch | view | raw | blame | history
src/de/uhilger/fm/Inflator.java 36 ●●●●● patch | view | raw | blame | history
src/de/uhilger/fm/package-info.java 7 ●●●●● patch | view | raw | blame | history
src/de/uhilger/fm/Deflator.java
@@ -40,13 +40,14 @@
   * gepackt werden soll. Die Datei mit dem gepackten Ordnerinhalt wird in dem Ordner angelegt, der
   * den zu packenden Ordner enthaelt.
   *
   * @param fName Name des zu packenden Ordners
   * @param relPath relativer Pfad zum Ordner, der gepackt werden soll
   * @param fName Name und Pfad relativ zu base des zu packenden Ordners  /home/neu-2024-11-08-1722/
   * @param relPath relativer Pfad zum Ordner, der gepackt werden soll  /h2/cms/home/neu-2024-11-08-1722/?zip
   * @param base  /Users/ulli/data/helix-data
   * @return die Meldung mit dem Ergebnis. Wenn die Meldung nicht "ok" lautet wurde die ZIP-Datei
   * nicht erzeugt und die Meldung nennt den Grund.
   */
  public String packFolder(String fName, String relPath, String base/*, HttpExchange e*/) {
    if (!relPath.startsWith(".")) {
  public String packFolder(String fName, /*String relPath, */String base) {
//    if (!relPath.startsWith(".")) {
      try {
        //String fName = getFileName(e);
        //logger.fine("fName: " + fName);
@@ -72,9 +73,9 @@
        //logger.log(Level.SEVERE, result, ex);
        return result;
      }
    } else {
      return "Falsche relative Pfadangabe";
    }
//    } else {
//      return "Falsche relative Pfadangabe";
//    }
  }
  /**
src/de/uhilger/fm/Inflator.java
@@ -26,18 +26,23 @@
import java.util.zip.ZipFile;
/**
 * Eine Klasse mit Methoden zum entpacken von Dateien
 * Entpacken von Dateien
 *
 * @author Ulrich Hilger, 15. Januar 2024
 */
public class Inflator {
  /* --------- ZIP entpacken ---------------- */
  public String extractZipfile(String fName, String relPath, String base) {
  /**
   * Eine Zip-Datei entpacken
   *
   * @param fName Name der Zip-Datei
   * @param base absoluter Pfad des Ablageortes der Zip-Datei
   * @return 'ok', wenn erfolgreich oder Fehlermeldung, wenn nicht
   */
  public String extractZipfile(String fName, /*String relPath, */String base) {
    //logger.fine("fName: " + fName + ", relPath: " + relPath);
    String result = null;
    if (!relPath.startsWith(".")) {
//    if (!relPath.startsWith(".")) {
      try {
        //File targetDir = new File(fileBase, relPath);
        //File targetDir = getTargetDir(relPath);
@@ -51,17 +56,17 @@
        result = ex.getLocalizedMessage();
        //logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
      }
    } else {
      result = "Falsche relative Pfadangabe.";
    }
//    } else {
//      result = "Falsche relative Pfadangabe.";
//    }
    return result;
  }
  /**
   * extract a given ZIP archive to the folder respective archive resides in
   * Eine Datei in den Ordner entpacken, in dem sie liegt
   *
   * @param archive the archive to extract
   * @throws Exception
   * @param archive die zu entpackende Zip-Datei
   * @throws Exception wenn etwas schief geht
   */
  private boolean extract(File archive) throws Exception {
    ZipFile zipfile = new ZipFile(archive);
@@ -76,11 +81,12 @@
  /**
   * unzip a given entry of a given zip file to a given location
   * Einen Eintrag in einer ZIP-Datei an einen gegebenen Ausgabeort extrahieren
   *
   * @param zipfile the zip file to read an entry from
   * @param zipentry the zip entry to read
   * @param destPath the path to the destination location for the extracted content
   * @throws IOException
   * @param zipfile die Zip-Datei, aus der ein zu entpackender Eintrag gelesen werden soll
   * @param zipentry der Eintrag, der entpackt werden soll
   * @param destPath der Pfad zum Ausgabeort
   * @throws IOException wenn etwas schief geht
   */
  private void unzip(ZipFile zipfile, ZipEntry zipentry, String destPath) throws IOException {
    byte buf[] = new byte[1024];
src/de/uhilger/fm/package-info.java
@@ -32,6 +32,13 @@
 *    Inflator().extractZipfile(fileName, path, base)
 * </pre>
 * 
 * Die hier enthaltenen Funktionen beinhalten keine Massnahmen gegen Path Traversal o.&auml;.
 * Dies ist beabsichtigt, um Pfadausdruecke wie z.B. '../' bei den hier implementierten
 * Dateioperationen verarbeiten zu koennen.
 *
 * <b>Programme, die diese Klassenbibliothek einsetzen, muessen eigene Massnahmen gegen
 * Path Traversal o.&auml;. beisteuern, sofern dies nicht gewuenscht ist.</b>
 *
 * <p>Die folgenden Funktionalitaeten sind in dieser Auspraegung einer  
 * Dateiverwaltung fest angelegt. Sie sind damit Kandidaten fuer eine 
 * Erweiterung dieser Klassenbibliothek um andere evtl. benoetigte