Klassenbiliothek fuer Dateiverwaltung
ulrich
8 hours ago 0cd5e868890043ce0544444cbf87a753b4119a93
commit | author | age
e369b9 1 /*
c45b52 2   fm - File management class library
e369b9 3   Copyright (C) 2024  Ulrich Hilger
U 4
5   This program is free software: you can redistribute it and/or modify
6   it under the terms of the GNU Affero General Public License as
7   published by the Free Software Foundation, either version 3 of the
8   License, or (at your option) any later version.
9
10   This program is distributed in the hope that it will be useful,
11   but WITHOUT ANY WARRANTY; without even the implied warranty of
12   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   GNU Affero General Public License for more details.
14
15   You should have received a copy of the GNU Affero General Public License
16   along with this program.  If not, see <https://www.gnu.org/licenses/>.
17  */
18 package de.uhilger.fm;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.nio.file.Files;
23
24 /**
ae26b0 25  * Eine Datei duplizieren
U 26  * 
e369b9 27  * @author Ulrich Hilger
U 28  * @version 0.1, 08.11.2024
29  */
30 public class Duplicator {
31   
ae26b0 32   /**
U 33    * Eine Datei duplizieren. Es entsteht eine neue Datei mit Namen 
34    * [Dateiname]-Kopie.[Endung], d.h. eine Datei namens datei.txt 
35    * wird dupliziert in datei-Kopie.txt
36    * 
37    * Wenn die Zieldatei bereits existiert, wird der neuen Datei eine 
38    * laufende Nummer angehaengt, d.h. aus datei.txt wird datei-Kopie-1.txt, 
39    * wenn datei-Kopie.txt bereits existiert.
40    * 
41    * @param base  der absolute Basispfad
42    * @param relPfad relative Pfad nebst Name der zu duplizierenden Datei
43    * @return  Name des erstellten Duplikats
44    * @throws IOException  wenn etwas schief geht
45    */
e369b9 46   public String duplizieren(String base, String relPfad) throws IOException {
U 47     File srcFile = new File(base, relPfad);
48     String fnameext = srcFile.getName();
49     int dotpos = fnameext.lastIndexOf(".");
50     String fname = fnameext.substring(0, dotpos);
51     String ext = fnameext.substring(dotpos);
52     File srcDir = srcFile.getParentFile();
53     File destFile = new File(srcDir, fname + "-Kopie" + ext);
54     int i = 1;
55     while (destFile.exists()) {
56       destFile = new File(srcDir, fname + "-Kopie-" + Integer.toString(++i) + ext);
57     }
58     Files.copy(srcFile.toPath(), destFile.toPath());
59     return destFile.getName();
60   }
61
62 }