Klassenbiliothek fuer Dateiverwaltung
ulrich
15 hours ago 1be785f6df00e3f36c00b58a2d0c623733c74621
commit | author | age
bcd08a 1 /**
8bde6f 2  * Klassen fuer das Dateimanagement mit <code>java.nio.file</code>. 
269203 3  * 
0bb213 4  * Die folgenden Funktionen sind enthalten:
U 5  * 
6  * <pre>
7  * Ordnerinhalt auflisten:    
8bde6f 8  *    Catalog().list(relPathAndName, miniUrlBase, baseDir)
e1fae2 9  * 
f29f29 10  * Datei speichern:
8bde6f 11  *    Writer().speichern(file, content)
0bb213 12  * 
U 13  * Dateien und Ordner loeschen:
8bde6f 14  *    Eraser().deleteFiles(relPfad, dateiname, basis)
0bb213 15  * 
U 16  * Kopieren von Dateien und Ordnern:
1be785 17  *    Mover().copy(quelle, ziel, dateiNamen, base)
0bb213 18  * 
U 19  * Verschieben von Dateien und Ordnern:
1be785 20  *    Mover().move(quelle, ziel, dateiNamen, base)
0bb213 21  * 
U 22  * Duplizieren einer Datei:
f29f29 23  *    Duplicator().duplizieren(base, fileName)
0bb213 24  * 
U 25  * Umbenennen einer Datei oder eines Ordners:
f29f29 26  *    Renamer().umbenennen(exchange, fileName, params[1], file)
0bb213 27  * 
U 28  * Packen eines Ordners:
f29f29 29  *    Deflator().packFolder(fileName, path, base)
0bb213 30  * 
U 31  * Entpacken einer ZIP-Datei:
f29f29 32  *    Inflator().extractZipfile(fileName, path, base)
0bb213 33  * </pre>
8bde6f 34  * 
7e5166 35  * Die hier enthaltenen Funktionen beinhalten keine Massnahmen gegen Path Traversal o.&auml;. 
U 36  * Dies ist beabsichtigt, um Pfadausdruecke wie z.B. '../' bei den hier implementierten 
37  * Dateioperationen verarbeiten zu koennen. 
38  * 
14367e 39  * <p><b>Programme, die diese Klassenbibliothek einsetzen, muessen eigene Massnahmen gegen 
U 40  * Path Traversal o.&auml;. vorschalten, sofern dies nicht gewuenscht ist.</b></p>
7e5166 41  * 
8bde6f 42  * <p>Die folgenden Funktionalitaeten sind in dieser Auspraegung einer  
U 43  * Dateiverwaltung fest angelegt. Sie sind damit Kandidaten fuer eine 
44  * Erweiterung dieser Klassenbibliothek um andere evtl. benoetigte 
45  * Auspraegungen.</p>
46  * 
1b9e9c 47  * <p><b>Handhabung von Bilddateien</b></p>
8bde6f 48  * 
U 49  * Neben der Datei eines Bildes in Originalgroesse werden weitere Dateien als Varianten 
50  * eines Bildes unterstuetzt.
51  * 
52  * In Dateilisten werden diese Varianten ausgeblendet und nur das Originalbild gezeigt. 
53  * 
54  * Die Dateinamen von Varianten eines Bildes muessen dazu einen mit Unterstrich beginnenden 
55  * Namenszusatz enthalten wie bspw. <code>_tn</code> fuer thumbnail oder <code>_sm</code> 
56  * fuer small usw. Gleichsam lassen sich damit Eigenschaften wie zum Beispiel 
57  * eine Base64-Kodierung kombinieren. Hier waere der Namenszusatz dann eine Kombination 
58  * aus Groesse und Kodierung wie mit <code>_sm_b64</code>, so dass sich fuer ein Bild stets 
1b9e9c 59  * eine ganze Gruppe von Dateien ergibt, z.B.:
8bde6f 60  * 
U 61  * <pre>
62  * bild.jpg
63  * bild_sm.jpg
64  * bild_sm_b64.jpg
65  * </pre>
66  * 
67  * Alle Dateioperationen dieser Klassenbibliothek wirken dennoch stets auf 
68  * alle Varianten des Bildes, wie es auf der Kommandozeile mit einem Wildcard-Operator 
69  * gemacht wuerde, z.B.
70  * 
71  * <pre>
72  *   cp /pfad/zum/bild*.jpg /pfad/zum/zielordner
73  * </pre>
74  * 
75  * Eine Dateiliste enthaelt aus diesem Grund fuer Bilddateien die beiden zusaetzlichen Angaben 
76  * <code>miniurl</code> und <code>imgsrc</code>. 
77  * 
1b9e9c 78  * <p><b>Ordnerliste im JSON-Format</b></p>
8bde6f 79  * 
U 80  * Die Liste mit Dateien eines Ordners wird im JSON-Format ausgegeben. Ueber eine 
81  * entsprechende Erweiterung koennte die Ausgabe in verschiedenen waehlbaren Formaten 
82  * erfolgen.
83  * 
b659da 84  * Die Transformation nach JSON erfordert die Package <code>com.google.gson.Gson</code>.
U 85  * 
bcd08a 86  */
U 87 package de.uhilger.fm;