Dateiname enthält Doppelpunkt

Hi!

Ich habe mit Java ein paar Dateien geschrieben. Unglücklicher Weise sind dabei Dateien entstanden, welche einen Doppelpunkt enthalten.

Selbstverständlich kann Windows diese Dateien nicht vernünftig darstellen. Auch nicht löschen, verschieben oder sonstwas.

Weil ich mich für schlau gehalten habe, programmierte ich mir schell mal einen 10zeiler, welcher mir die Dateien löschen soll. Das klappt leider nicht. Umbenennen geht auch nicht. Es kommt keine Exception. Es passiert einfach nichts

Was kann ich jetzt noch probieren?

Danke

Daniel

Der Code

            File dir = new File("C:\\Users\\root\\Desktop");
            File[] files = dir.listFiles();
            for (File file : files) {
                if(file.getName().startsWith("DkD")){
                    System.out.println(file.getName());
                    //file.delete();
                    file.renameTo(new File("C:\\Users\\root\\Desktop\\zzzzzzzzz"));
                }
            }
        }```

eine Linux Live CD könnte dir hier helfen, der Linux Treiber kann in diesem Bereich oft mehr

Falls du Windows 10 hast gibts da nicht jetzt ein neues Linux Subsystem?
Vl hilft aber auch schon einfach cygwin installiert zu haben und das löschen hier über das ‘rm’ tool oder umbenennen mit dem ‘mv’ tool

Kenne ich auch, mit Java Ordnerstrukturen erzeugt die viel zu lang fuer Windows waren, aber NTFS an sich hatte keine Probleme mit.

Steht auch so in der JavaDoc, File.delete und File.renameTo geben booleans zurueck.

Wuerde auch zu Linux raten :slight_smile:

Interessant. Tipp mal in dem Verzeichnis an der Konsole
dir /X
ein. Dann sollte er die “8.3”-Namen anzeigen. Die sollten gültig sein, und man sollte die Dateien mit
del FOOXXX~1.XYZ
löschen könnten. (Aber ausprobieren werd’ ich das jetzt mal nicht ;-))

Lieben Dank an euch alle :slight_smile:

[QUOTE=Marco13]Interessant. Tipp mal in dem Verzeichnis an der Konsole
dir /X
ein. Dann sollte er die „8.3“-Namen anzeigen. Die sollten gültig sein, und man sollte die Dateien mit
del FOOXXX~1.XYZ
löschen könnten. (Aber ausprobieren werd’ ich das jetzt mal nicht ;-))[/QUOTE]
Das hat super geklappt. :smiley:

Interessant wäre, ob das auch funktioniert, wenn der Doppelpunkt innerhalb der ersten 6 Zeichen vorkommt.

Ich denke schon: In dem 8.3-Format ersetzt er wohl „alle“ Zeichen, die er ansonsten nicht versteht. Aber keine Gewähr, wenn jetzt jemand meint, eine Datei con>c:<con oder so nennen zu müssen :smiley:

Das könnte man auf einer Diskette ausprobieren, wenn man solche Laufwerke noch hätte. :o)

Habe ich sogar. Aber nur 3.5", für das 5.25" passen die Anschlüsse nicht :frowning: