Klassenbiliothek fuer Dateiverwaltung
1be785f6df00e3f36c00b58a2d0c623733c74621..c6b6d94fe81f669e229612ed2e336625650ebe6e
13 hours ago ulrich
Build-Anweisungen ergaenzt
c6b6d9 diff | tree
14 hours ago ulrich
Beruecksichtigung aller Varianten eines Bildes auch beim Kopieren von Bildd...
0cd5e8 diff | tree
2 files modified
48 ■■■■ changed files
README.md 8 ●●●● patch | view | raw | blame | history
src/de/uhilger/fm/Mover.java 40 ●●●●● patch | view | raw | blame | history
README.md
@@ -12,15 +12,19 @@
Der Quellcode von fm wird von hier an einen frei wählbaren lokalen Ablageort heruntergeladen und entpackt. In der hier folgenden weiteren Beschreibung wird das so entstandene Verzeichnis `fm` einschließlich des absoluten Pfades dorthin `$FM` genannt. Anstelle von `$BASELINK` würde man also beispielweise `/home/fred/fm` notieren, wenn in das persönliche Verzeichnis des Benutzers `fred` heruntergealden und entpackt wurde.
## Abhängigkeiten
fm erfordert die Klassenbibliothek [Gson](https://google.github.io/gson/).
## Klassenbibliothek herstellen
fm ist zur Nutzung im Zusammenspiel mit anderen Programmen vorgesehen und wird dazu am besten als Klassenbibliothek genutzt. Zur Herstellung einer Klassenbibliothek werden mit Hilfe der wie zuvor beschrieben geladenen Teile die folgenden Kommandos ausgeführt (Beispiel für Linux):
fm ist zur Nutzung im Zusammenspiel mit anderen Programmen vorgesehen und wird dazu am besten als Klassenbibliothek genutzt. Es wird angenommen, dass die oben aufgeführte Bibliothek gson lokal an einem Ort abgelegt ist, dessen Pfad mit dem Platzhalter `$JLIB` gemeint ist. Zur Herstellung einer Klassenbibliothek werden mit Hilfe der wie zuvor beschrieben geladenen Teile die folgenden Kommandos ausgeführt (Beispiel für Linux):
```
cd $FM
mkdir classes
mkdir dist
$JDK/bin/javac -d classes src/de/uhilger/fm/*.java
$JDK/bin/javac -classpath $JLIB/gson-2.8.6.jar -d classes src/de/uhilger/fm/*.java
$JDK/bin/jar -cf dist/fm.jar -C classes .
```
src/de/uhilger/fm/Mover.java
@@ -79,14 +79,11 @@
   */
  private void copyOrMoveFiles(String fromPath, String toPath, String[] fileNames, 
          int operation, String base) throws IOException {
    //String result = null;
    File srcDir = new File(base, fromPath);
    File targetDir = new File(base, toPath);
    for (String fileName : fileNames) {
      File srcFile = new File(srcDir, fileName);
      //logger.fine("srcFile: " + srcFile);
      if (srcFile.isDirectory()) {
        //logger.fine("srcFile is directory.");
        FileOpsVisitor bearbeiter = new FileOpsVisitor();
        bearbeiter.setTargetDir(targetDir.toPath());
        bearbeiter.setOperation(operation);
@@ -97,21 +94,20 @@
        if (destFile.exists()) {
          destFile = getNewFileName(destFile);
        }
        if (operation == OP_MOVE) {
          String fname = srcFile.getName().toLowerCase();
          if (fname.endsWith(ImageFileFilter.JPEG)
                  || fname.endsWith(ImageFileFilter.JPG)
                  || fname.endsWith(ImageFileFilter.PNG)) {
            moveImgFilesToDirectory(srcFile, srcDir, targetDir/*, false*/);
          } else {
            Files.move(source, destFile.toPath());
          }
        String fname = srcFile.getName().toLowerCase();
        if (fname.endsWith(ImageFileFilter.JPEG)
                || fname.endsWith(ImageFileFilter.JPG)
                || fname.endsWith(ImageFileFilter.PNG)) {
          copyOrMoveImgFilesToDirectory(srcFile, srcDir, targetDir/*, false*/, operation);
        } else {
          Files.copy(source, destFile.toPath());
        }
          if (operation == OP_MOVE) {
            Files.move(source, destFile.toPath());
          } else {
            Files.copy(source, destFile.toPath());
          }
        }
      }
    }
    //return result;
  }
  /**
@@ -126,20 +122,20 @@
   * @param targetDir der Zielort
   * @throws IOException wenn etwas schief geht
   */
  private void moveImgFilesToDirectory(File srcFile, File srcDir, File targetDir/*,
          boolean createDestDir*/) throws IOException {
  private void copyOrMoveImgFilesToDirectory(File srcFile, File srcDir, File targetDir,
          int operation) throws IOException {
    String fnameext = srcFile.getName();
    int dotpos = fnameext.lastIndexOf(".");
    String fname = fnameext.substring(0, dotpos);
    String ext = fnameext.substring(dotpos);
    //logger.fine("fname: " + fname + ", ext: " + ext);
    Path targetPath = targetDir.toPath();
    DirectoryStream<Path> stream = Files.newDirectoryStream(srcDir.toPath(), fname + "*" + ext); 
                                                //"*.{txt,doc,pdf,ppt}"
    for (Path path : stream) {
      //logger.fine(path.getFileName().toString());
      //Files.delete(path);
      Files.move(path, targetPath.resolve(path.getFileName()));
      if(operation == OP_COPY) {
        Files.copy(path, targetPath.resolve(path.getFileName()));
      } else {
        Files.move(path, targetPath.resolve(path.getFileName()));
      }
    }
    stream.close();
  }