Klassenbiliothek fuer Dateiverwaltung
ulrich
10 hours ago 0cd5e868890043ce0544444cbf87a753b4119a93
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;
@@ -25,7 +24,7 @@
import java.nio.file.Path;
/**
 * Eine Klasse mit Methoden zum Umbenennen von Dateien
 * Umbenennen von Dateien
 * 
 * @author Ulrich Hilger, 15. Januar 2024
 */
@@ -33,13 +32,21 @@
  
  public static final String STR_DOT = ".";
  
  public String umbenennen(HttpExchange exchange, String relPfad, String neuerName, File file) throws IOException {
  /**
   * Eine Datei oder einen Ordner umbenennen
   *
   * @param neuerName  der Name fuer das Objekt
   * @param file  das Objekt, das umbenannt werden soll
   * @return der neue Name
   * @throws IOException wenn etwas schief geht
   */
  public String rename(/*HttpExchange exchange, *//*String relPfad,*/ String neuerName, File file)
          throws IOException {
    File neueDatei;
    //String relPfad = helper.getFileName(exchange);
    //File file = new File(exchange.getHttpContext().getAttributes().get(FileHandler.ATTR_FILE_BASE).toString(), relPfad);
    String fname = file.getName().toLowerCase();
    if(fname.endsWith(Const.JPEG) || fname.endsWith(Const.JPG) || fname.endsWith(Const.PNG)) {
      neueDatei = renameImgFiles(file.getParentFile(), file, neuerName);
    if(fname.endsWith(ImageFileFilter.JPEG) || fname.endsWith(ImageFileFilter.JPG) ||
            fname.endsWith(ImageFileFilter.PNG)) {
      neueDatei = renameImgFiles(file, neuerName);
    } else {
      neueDatei = new File(file.getParentFile(), neuerName);
      file.renameTo(neueDatei);
@@ -47,37 +54,48 @@
    return neueDatei.getName();
  }
  
  public File renameImgFiles(File targetDir, File targetFile, String newName) throws IOException {
  /**
   * Alle Varianten einer Bilddatei umbenennen
   *
   * TODO einen sinnvolleren Rueckgabewert bauen
   *
   * @param file  die Origianlbilddatei
   * @param newName  der neue Name
   * @return  Name der letzten Datei, die umbenannt wurde
   * @throws IOException   wenn etwas schief geht
   */
  public File renameImgFiles(/*File targetDir, */ File file, String newName) throws IOException {
    String alt;
    String neu;
    File neueDatei = targetFile;
    File neueDatei = file;
    
    File targetDir = file.getParentFile();
    int newdotpos = newName.lastIndexOf(STR_DOT);
    String newfname = newName.substring(0, newdotpos);
    String newext = newName.substring(newdotpos);
    //logger.fine("newfname: " + newfname + ", newext: " + newext);
    
    String fnameext = targetFile.getName();
    String fnameext = file.getName();
    int dotpos = fnameext.lastIndexOf(STR_DOT);
    String fname = fnameext.substring(0, dotpos);
    String ext = fnameext.substring(dotpos);
    //logger.fine("fname: " + fname + ", ext: " + ext);
    
    DirectoryStream<Path> stream = Files.newDirectoryStream(targetDir.toPath(), fname + "*" + ext); //"*.{txt,doc,pdf,ppt}"
    DirectoryStream<Path> stream = Files.newDirectoryStream(targetDir.toPath(), fname + "*" + ext);
    for (Path path : stream) {
      //logger.fine(path.getFileName().toString());
      alt = path.getFileName().toString();
      //logger.fine("alt: " + alt);
      if(alt.contains(Const.TN)) {
        neu = newfname + Const.TN + newext;
      } else if (alt.contains(Const.KL)) {
        neu = newfname + Const.KL + newext;
      } else if(alt.contains(Const.GR)) {
        neu = newfname + Const.GR + newext;
      } else if(alt.contains(Const.MT)) {
        neu = newfname + Const.MT + newext;
      } else if(alt.contains(Const.SM)) {
        neu = newfname + Const.SM + newext;
      if(alt.contains(ImageFileFilter.TN)) {
        neu = newfname + ImageFileFilter.TN + newext;
      } else if (alt.contains(ImageFileFilter.KL)) {
        neu = newfname + ImageFileFilter.KL + newext;
      } else if(alt.contains(ImageFileFilter.GR)) {
        neu = newfname + ImageFileFilter.GR + newext;
      } else if(alt.contains(ImageFileFilter.MT)) {
        neu = newfname + ImageFileFilter.MT + newext;
      } else if(alt.contains(ImageFileFilter.SM)) {
        neu = newfname + ImageFileFilter.SM + newext;
      } else {
        neu = newName;
      }
@@ -87,7 +105,4 @@
    stream.close();
    return neueDatei;
  }
}
}