Klassenbiliothek fuer Dateiverwaltung
ulrich
17 hours ago 7e5166a55fa459deab5579f764b7bb34719e5ec9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
/**
 * 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.&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 
 * 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.
 * 
 */
package de.uhilger.fm;