/* http-cm - File management extensions to jdk.httpserver Copyright (C) 2021 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.httpserver.cm; import java.io.File; import java.util.logging.Logger; /** * FileTransporter * * @author Ulrich Hilger * @version 1, 04.07.2021 */ public class FileTransporter { private static final Logger logger = Logger.getLogger(FileTransporter.class.getName()); /** * 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()) { StringBuffer buf = new StringBuffer(); 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; } }