/* fm - File management class library Copyright (C) 2024 Ulrich Hilger This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see . */ package de.uhilger.fm; import java.io.File; /** * FileHelper * * @author Ulrich Hilger * @version 1, 04.07.2021 */ public class FileHelper { /** * Einen Namen fuer eine Datei erzeugen, der noch nicht existiert. * * Der Dateiname wird wie folgt gebildet * '[Bestehender Dateiname]-[Nummer].[Erweiterung]' * * Ordner haben in der Regel keine Erweiterung, dann lautet der neue Name * '[Bestehender Ordnername]-[Nummer]' * * Fuer Nummer wird eine Nummer mit 1 beginnend heraufgezaehlt bis ein * Dateiname entsteht, den es im betreffenden Ordner noch nicht gibt. * * @param file die Datei, die schon existiert * @return ein Dateiname, der im Ordner noch nicht verwendet wird */ public File getNewFileName(File file) { File dir = file.getParentFile(); String targetName = file.getName(); //logger.fine("targetName: " + targetName); String ext = ""; int dotpos = targetName.indexOf("."); if (dotpos > -1) { ext = targetName.substring(dotpos); targetName = targetName.substring(0, dotpos); } //logger.fine("targetName: " + targetName + ", ext: " + ext); int i = 1; while (file.exists()) { StringBuilder buf = new StringBuilder(); buf.append(targetName); buf.append("-"); buf.append(i); if (ext.length() > 0) { buf.append(ext); } file = new File(dir, buf.toString()); i++; } //logger.fine("new file: " + file.getName()); return file; } }