/**
|
* Klassen fuer das Dateimanagement mit <code>java.nio.file</code>.
|
*
|
* Die folgenden Funktionen sind enthalten:
|
*
|
* <pre>
|
* Ordnerinhalt auflisten:
|
* Catalog().list(relPathAndName, miniUrlBase, baseDir)
|
*
|
* Datei speichern:
|
* Writer().speichern(file, content)
|
*
|
* Dateien und Ordner loeschen:
|
* Eraser().deleteFiles(relPfad, dateiname, basis)
|
*
|
* Kopieren von Dateien und Ordnern:
|
* Mover().copyOrMoveFiles(quelle, ziel, dateiNamen, op, base)
|
*
|
* Verschieben von Dateien und Ordnern:
|
* Mover().copyOrMoveFiles(quelle, ziel, dateiNamen, op, base)
|
*
|
* Duplizieren einer Datei:
|
* Duplicator().duplizieren(base, fileName)
|
*
|
* Umbenennen einer Datei oder eines Ordners:
|
* Renamer().umbenennen(exchange, fileName, params[1], file)
|
*
|
* Packen eines Ordners:
|
* Deflator().packFolder(fileName, path, base)
|
*
|
* Entpacken einer ZIP-Datei:
|
* Inflator().extractZipfile(fileName, path, base)
|
* </pre>
|
*
|
* Die hier enthaltenen Funktionen beinhalten keine Massnahmen gegen Path Traversal o.ä.
|
* Dies ist beabsichtigt, um Pfadausdruecke wie z.B. '../' bei den hier implementierten
|
* Dateioperationen verarbeiten zu koennen.
|
*
|
* <p><b>Programme, die diese Klassenbibliothek einsetzen, muessen eigene Massnahmen gegen
|
* Path Traversal o.ä. vorschalten, sofern dies nicht gewuenscht ist.</b></p>
|
*
|
* <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
|
* Auspraegungen.</p>
|
*
|
* <p><b>Handhabung von Bilddateien</b></p>
|
*
|
* Neben der Datei eines Bildes in Originalgroesse werden weitere Dateien als Varianten
|
* eines Bildes unterstuetzt.
|
*
|
* In Dateilisten werden diese Varianten ausgeblendet und nur das Originalbild gezeigt.
|
*
|
* Die Dateinamen von Varianten eines Bildes muessen dazu einen mit Unterstrich beginnenden
|
* Namenszusatz enthalten wie bspw. <code>_tn</code> fuer thumbnail oder <code>_sm</code>
|
* fuer small usw. Gleichsam lassen sich damit Eigenschaften wie zum Beispiel
|
* eine Base64-Kodierung kombinieren. Hier waere der Namenszusatz dann eine Kombination
|
* aus Groesse und Kodierung wie mit <code>_sm_b64</code>, so dass sich fuer ein Bild stets
|
* eine ganze Gruppe von Dateien ergibt, z.B.:
|
*
|
* <pre>
|
* bild.jpg
|
* bild_sm.jpg
|
* bild_sm_b64.jpg
|
* </pre>
|
*
|
* Alle Dateioperationen dieser Klassenbibliothek wirken dennoch stets auf
|
* alle Varianten des Bildes, wie es auf der Kommandozeile mit einem Wildcard-Operator
|
* gemacht wuerde, z.B.
|
*
|
* <pre>
|
* cp /pfad/zum/bild*.jpg /pfad/zum/zielordner
|
* </pre>
|
*
|
* Eine Dateiliste enthaelt aus diesem Grund fuer Bilddateien die beiden zusaetzlichen Angaben
|
* <code>miniurl</code> und <code>imgsrc</code>.
|
*
|
* <p><b>Ordnerliste im JSON-Format</b></p>
|
*
|
* Die Liste mit Dateien eines Ordners wird im JSON-Format ausgegeben. Ueber eine
|
* entsprechende Erweiterung koennte die Ausgabe in verschiedenen waehlbaren Formaten
|
* erfolgen.
|
*
|
* Die Transformation nach JSON erfordert die Package <code>com.google.gson.Gson</code>.
|
*
|
*/
|
package de.uhilger.fm;
|