Klassenbiliothek fuer Dateiverwaltung
ulrich
10 hours ago 0cd5e868890043ce0544444cbf87a753b4119a93
src/de/uhilger/fm/Eraser.java
@@ -23,26 +23,42 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
/**
 * Eine Klasse mit Methoden zum Loeschen von Dateien
 * Loeschen von Dateien und Ordnern
 * 
 * @author Ulrich Hilger, 15. Januar 2024
 */
public class Eraser {
  public static final int OP_DELETE = 3;
  private final String STR_DOT = ".";
  /**
   * Dateien und Ordner loeschen
   *
   * @param relPath  der relative Pfad, der gemeinsam mit 'base' den absoluten
   * Pfad zum Ordner ergibt, der die zu loeschenden Dateien enthaelt
   * @param fileNames  Liste mit Namen von Dateien und Ordnern, die geloescht werden sollen
   * @param base  absoluter Basispfad
   * @return "deleted" oder null, wenn ein Fehler auftrat
   */
  public String deleteFiles(String relPath, List<String> fileNames, String base) {
    String result = null;
    try {
      //logger.fine(fileNames.toString());
      if (!relPath.startsWith(Const.STR_DOT)) {
      if (!relPath.startsWith(STR_DOT)) {
        File targetDir = new File(base, relPath); // getTargetDir(relPath);
        //logger.fine("targetDir: " + targetDir);
        for (String fileName : fileNames) {
          File targetFile = new File(targetDir, fileName);
          //logger.fine(targetFile.getAbsolutePath());
          if (targetFile.isDirectory()) {
            CopyMoveVisitor bearbeiter = new CopyMoveVisitor();
            bearbeiter.setOperation(Const.OP_DELETE);
            FileOpsVisitor bearbeiter = new FileOpsVisitor();
            bearbeiter.setOperation(OP_DELETE);
            Files.walkFileTree(targetFile.toPath(), bearbeiter);
          } else {
            /*
@@ -51,9 +67,9 @@
                die so heissen, also z.B. alle [Dateiname]*.jpg
             */
            String fname = targetFile.getName().toLowerCase();
            if (fname.endsWith(Const.JPEG)
                    || fname.endsWith(Const.JPG)
                    || fname.endsWith(Const.PNG)) {
            if (fname.endsWith(ImageFileFilter.JPEG)
                    || fname.endsWith(ImageFileFilter.JPG)
                    || fname.endsWith(ImageFileFilter.PNG)) {
              deleteImgFiles(targetDir, targetFile);
            } else {
              targetFile.delete();
@@ -63,14 +79,21 @@
        result = "deleted";
      }
    } catch (IOException ex) {
      //logger.log(Level.SEVERE, ex.getLocalizedMessage(), ex);
      Logger.getLogger(Eraser.class.getName()).log(Level.SEVERE, ex.getMessage(), ex);
    }
    return result;
  }
  /**
   * Alle Varianten einer Bilddatei loeschen
   *
   * @param targetDir  der Ordner, aus dem geloescht werden soll
   * @param targetFile Bilddatei, deren Varianten geloescht werden sollen
   * @throws IOException wenn etwas schief geht
   */
  private void deleteImgFiles(File targetDir, File targetFile) throws IOException {
    String fnameext = targetFile.getName();
    int dotpos = fnameext.lastIndexOf(Const.STR_DOT);
    int dotpos = fnameext.lastIndexOf(STR_DOT);
    String fname = fnameext.substring(0, dotpos);
    String ext = fnameext.substring(dotpos);
    //logger.fine("fname: " + fname + ", ext: " + ext);