Eindeutigen Dateinamen erzeugen

Hin und wieder ist es notwendig, in einem Ordner Dateien gleichen Namens zu speichern. Da das unter Windows (und den meisten anderen Betriebssystemen auch) nicht geht, muß man sich was einfallen lassen. Gängige Praxis vieler Anwendungen ist es dabei, dem Dateinamen ein Zeichen mit einer Zahl anzuhängen, wenn es den Originalnamen schon gab. Z.B. wird die Datei „Neues Dokument.txt“ zu „Neues Dokument~1.txt“, dann „Neues Dokument~2.txt“ usw.

Der folgende Code-Snippet erzeugt für einen gegebenen Dateinamen genau solche einen eindeutigen Namen mit der kleinstmöglichen Zahl.

public static String getUniqueFileName(String tempFileName, String extension, String extensionSeparator, String suffixSeparator)
{
  String tempFileNameNew; 
  if (extension == null || extension.length() == 0)
  {
    tempFileNameNew = tempFileName;
  } 
  else
  {
    tempFileNameNew = tempFileName + extensionSeparator + extension;
  } 

  File file = new File(tempFileNameNew);
  int suffix = 1; 

  while (file.isFile())
  {
    if (extension == null || extension.length() > 0)
    {
      tempFileNameNew = tempFileName + suffixSeparator + String.valueOf(suffix);
    }
    else
    {
      tempFileNameNew = tempFileName + suffixSeparator + String.valueOf(suffix) + extensionSeparator + extension;
    } 

    file = new File(tempFileNameNew);
    suffix++;
  }

  return tempFileNameNew;
}

Möglicher Aufruf wäre also:

String newFilename = getUniqueFileName("Neues Textdokument", "txt", ".", "~");

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.