Ich benutze java.awt.FileDialog, um einen Dialog zum Speichern einer Datei zu erstellen. Das Problem ist, dass FileDialog, wenn ich einen vorgeschlagenen (Standard) Dateinamen vorschlage, seine Erweiterung streift. Beispiel:
%Vor%Ich würde erwarten, dass wenn der FileDialog erscheint, der Standarddateiname "Untitled.txt" ist, aber stattdessen ist es einfach "Untitled". Wenn Benutzer auf Speichern klicken, erhalte ich einen Dateinamen ohne die Erweiterung. FileDialog tut dies sowohl unter Windows als auch unter OS X.
Ich verstehe es nicht. Warum sollte FileDialog die Erweiterung absichtlich entfernen? Gibt es einen logischen Grund dafür? Die Dokumentation diskutiert es nicht. Als Workaround könnte ich einfach die Erweiterung zu der Zeichenfolge hinzufügen, die FileDialog zurückgibt, aber trotzdem scheint das ein Fehler zu sein ...
(Beachten Sie, dass ich JFileChooser nicht verwenden kann; ich brauche den nativen AWT FileDialog.)
Das ist bei mir unter Windows 7 mit Sun Java 1.5 und 1.6 nicht der Fall.
Das Verhalten, das ich erhalte, hängt leicht von der Einstellung der Option "Erweiterungen bekannter Dateitypen verbergen" im Windows Explorer ab. Wenn das eingeschaltet ist, dann sehe ich die Erweiterung im Dateidialog nicht, wie Sie vielleicht erwarten, aber es gibt mir den vollständigen Dateinamen zurück.
BEARBEITEN: Realisieren, dass ich mich bei AWT und nativen Widgets geirrt habe - verwirrende AWT und Swing.
Ich habe nach einer Antwort auf genau dieses Problem gesucht, das nur auf Mac erscheint. Sie müssen entweder mit der hässlichen JFileChooser-Option (swing, lightweight, native look) leben oder ein if (os ist mac) haben und die Dinge anders handhaben, indem Sie die Dateierweiterung am Ende selbst setzen.
Es ist ein Mac Java AWT Bug, der hoffentlich irgendwann behoben wird.
Hier ist ein Beispiel, wie man eine neue Datei im angegebenen Verzeichnis und Namen der Datei von FileDialog, Strings aus einem Vektor von Strings. Es funktioniert für mich!
%Vor%Verwenden Sie JFileChooser, aber legen Sie das am Anfang des Programms:
%Vor%Tags und Links java awt filedialog