src/de/uhilger/fm/Catalog.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/fm/Deflator.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/fm/DirList.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/fm/FileRef.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/fm/Renamer.java | ●●●●● patch | view | raw | blame | history | |
src/de/uhilger/fm/package-info.java | ●●●●● patch | view | raw | blame | history |
src/de/uhilger/fm/Catalog.java
File was renamed from src/de/uhilger/fm/Lister.java @@ -37,32 +37,32 @@ * @author Ulrich Hilger * @version 0.1, 05.11.2024 */ public class Lister { public class Catalog { public static final String STR_DOT = "."; /** * * @param fName Name und relativer Pfad des Ordners, dessen Inhalt aufgelistet werden soll * @param ctxPath Kontext Pfad zur Bildung des URL, der auf die Miniaturansicht verweist * @param relPathAndName Name und relativer Pfad des Ordners, dessen Inhalt aufgelistet werden soll * @param urlBase Kontext Pfad zur Bildung des URL fuer Miniaturansicht und imgsrc bei Bilddateien * (koennte evtl. im Client gebildet werden, hier dann nur Mini-Dateiname zurueckgeben) * @param base Basisverzeichnis, gegen das der relative Pfad aufgeloest werden soll * @return die Dateiliste als JSON String * @throws IOException */ public String liste(String fName, String ctxPath, String base/*, String path*/) throws IOException { File[] files = new File(base, fName).listFiles(new ImageFileFilter()); public String list(String relPathAndName, String urlBase, String base) throws IOException { File[] files = new File(base, relPathAndName).listFiles(new ImageFileFilter()); if (files != null && files.length > 0) { Arrays.sort(files); ArrayList liste = new ArrayList(); for (File file : files) { Datei datei = new Datei(); FileRef datei = new FileRef(); String dateiName = file.getName(); datei.setName(dateiName); if (file.isDirectory()) { datei.setTyp(Datei.TYP_ORDNER); datei.setTyp(FileRef.TYP_ORDNER); } else { datei.setTyp(Datei.TYP_DATEI); datei.setTyp(FileRef.TYP_DATEI); } String lowerName = dateiName.toLowerCase(); if (lowerName.endsWith(ImageFileFilter.JPEG) @@ -71,7 +71,7 @@ datei.setBild(true); String ext = dateiName.substring(dateiName.lastIndexOf(STR_DOT)); String ohneExt = dateiName.substring(0, dateiName.lastIndexOf(STR_DOT)); datei.setMiniurl(ctxPath + /*"/" + */ fName + ohneExt + ImageFileFilter.TN + ext); datei.setMiniurl(urlBase + /*"/" + */ relPathAndName + ohneExt + ImageFileFilter.TN + ext); //buildImgSrc(file, datei, ohneExt, ext); } liste.add(datei); @@ -85,8 +85,8 @@ //} if (!liste.isEmpty()) { DirList list = new DirList(); list.setPfad(ctxPath + fName); list.setDateien(liste); list.setDirectory(urlBase + relPathAndName); list.setFiles(liste); Gson gson = new Gson(); String json = gson.toJson(list); return json; src/de/uhilger/fm/Deflator.java
@@ -27,7 +27,7 @@ import java.util.zip.ZipOutputStream; /** * Eine Klasse mit Methoden zum Packen von Dateien # * Packen von Dateien * * @author Ulrich Hilger, 15. Januar 2024 */ @@ -40,7 +40,7 @@ * Einen Ordner packen. * * Als Ziel wird eine neue Datei mit Dateiendung '.zip' erzeugt, die so heisst wie der Ordner, der * gapckt werden soll. Die Datei mit dem gepackten Ordnerinhalt wird in dem Ordner angelegt, der * 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 src/de/uhilger/fm/DirList.java
@@ -25,23 +25,23 @@ * @author Ulrich Hilger, 15. Januar 2024 */ public class DirList { private String pfad; private List<Datei> dateien; private String dir; private List<FileRef> dateien; public String getPfad() { return pfad; public String getDirectory() { return dir; } public void setPfad(String pfad) { this.pfad = pfad; public void setDirectory(String path) { this.dir = path; } public List<Datei> getDateien() { public List<FileRef> getFiles() { return dateien; } public void setDateien(List<Datei> dateien) { this.dateien = dateien; public void setFiles(List<FileRef> files) { this.dateien = files; } src/de/uhilger/fm/FileRef.java
File was renamed from src/de/uhilger/fm/Datei.java @@ -23,7 +23,7 @@ * @author Ulrich Hilger * @version 1, 11. Mai 2021 */ public class Datei { public class FileRef { public static final String TYP_DATEI = "datei"; public static final String TYP_ORDNER = "ordner"; src/de/uhilger/fm/Renamer.java
@@ -17,7 +17,6 @@ */ package de.uhilger.fm; import com.sun.net.httpserver.HttpExchange; import java.io.File; import java.io.IOException; import java.nio.file.DirectoryStream; @@ -33,7 +32,7 @@ public static final String STR_DOT = "."; public String umbenennen(/*HttpExchange exchange, */String relPfad, String neuerName, File file) public String rename(/*HttpExchange exchange, */String relPfad, String neuerName, File file) throws IOException { File neueDatei; String fname = file.getName().toLowerCase(); src/de/uhilger/fm/package-info.java
@@ -1,19 +1,17 @@ /** * Klassen fuer das Dateimanagement mit java.nio.file. * Klassen fuer das Dateimanagement mit <code>java.nio.file</code>. * * Die folgenden Funktionen sind enthalten: * * <pre> * Ordnerinhalt auflisten: * Lister().liste(ordnerName, ctx, basisOrdner) * * TODO: JSON-Liste und Miniurl sowie Handhabung von Bilddateien ueberpruefen * Catalog().list(relPathAndName, miniUrlBase, baseDir) * * Datei speichern: * Writer.speichern(file, content) * Writer().speichern(file, content) * * Dateien und Ordner loeschen: * Eraser.deleteFiles(relPfad, dateiname, basis) * Eraser().deleteFiles(relPfad, dateiname, basis) * * Kopieren von Dateien und Ordnern: * Mover().copyOrMoveFiles(quelle, ziel, dateiNamen, op, base) @@ -33,5 +31,48 @@ * Entpacken einer ZIP-Datei: * Inflator().extractZipfile(fileName, path, base) * </pre> * * <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>Handhabung von Bilddateien</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 Datien 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>Ordnerliste im JSON-Format</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;