*Markus: File umbenennen scheitert

Beitrag lesen

Hallo,

Keine Ahnung was du genau brauchst. Aber getAbsolutePath() ist üblicherweise
ausreichend.

Ok, da hast du recht.

Gaaaanz schlechte Idee. Um Strings zu vergleichen sollte immer
String.equals(String) verwendet werden, außer man weiß ganz genau was
man da tut.

Ja, Schlampigkeitsfehler. Sollte natürlich nicht vorkommen.

Wieso wirfst du eine SecurityException? Das ist eine Exception des
Security Manager von Java, der z.B. darauf achtet, daß bestimmte
Operationen im Applet-Kontext oder Server-Kontext nicht ausgeführt
werden dürfen.

Gut, denn ich wusste nicht, was mit Security Manager eigentlich gemein ist. Ich dachte natürlich, dass es einen tieferen Grund haben muss, genau diese Exception zu werfen, wie es auch einen tiefen Grund, den ich nicht verstehe, haben muss, dass bei renameTo kein String übergeben wird, sondern ein "File"-Objekt.

Nimm hier lieber IOException oder eine eigene Exception.

Ok, ich habe es nun umgeschrieben. Dennoch ändert sich das fehlerhafte Verhalten des Programms nicht. Es zeigt genau die gleichen Symptome, wie vorher:

  
 private File checkAndSetExtension(File filename) throws IOException   {  
  String dateiname = filename.getName().trim();  
        if (dateiname.lastIndexOf('.') != -1)   {  
         if (dateiname.substring(dateiname.lastIndexOf('.')).toLowerCase().equals(".tel"))  {  
            System.out.println("1: " + file.getAbsolutePath());  
            if (filename.renameTo(new File(file.getAbsolutePath(), file.getAbsolutePath() + ".tel")) == false)  
             throw new IOException();  
         }  
        }  
        else   {  
       System.out.println("2: " + file.getAbsolutePath());  
        if (filename.renameTo(new File(file.getAbsolutePath(), file.getAbsolutePath() + ".tel")) == false)  
         throw new IOException();  
        }  
  
  return filename;  
 }  

Mit equals steigt das Programm ebenfalls selbst bei richtiger Extension in die Verzweigung ein. Jetzt verstehe ich bald gar nichts mehr.

Markus