Save FileDialog in Java-strips Initiale Datei-Erweiterung
Ich bin mit java.das awt.FileDialog erstellen Sie ein Dialogfeld zum speichern der Datei. Das problem ist, dass wenn ich geben Sie einen vorgeschlagenen (Standard -) Datei, name, "FileDialog" - Streifen seine Erweiterung. Beispiel:
import java.awt.*;
import java.io.*;
public class SaveFile {
public static void main(String[] args) {
FileDialog fileDialog = new FileDialog(new Frame(), "Save", FileDialog.SAVE);
fileDialog.setFilenameFilter(new FilenameFilter() {
public boolean accept(File dir, String name) {
return name.endsWith(".txt");
}
});
fileDialog.setFile("Untitled.txt");
fileDialog.setVisible(true);
System.out.println("File: " + fileDialog.getFile());
}
}
Ich würde erwarten, dass, wenn der FileDialog angezeigt wird, wird der Standard-Dateiname ist "Untitled.txt", aber stattdessen ist es einfach nur "Untitled". Wenn Benutzer klicken Sie auf Speichern, bekomme ich wieder einen Dateinamen ohne die Erweiterung. FileDialog tut dies auf Windows und OS X.
Ich verstehe es nicht. Warum würde FileDialog bewusst strip die Erweiterung? Gibt es eine logische Begründung dafür? Die Dokumentation nicht diskutieren. Als workaround könnte ich fügen Sie einfach die Erweiterung der string, FileDialog gibt, aber trotzdem, das scheint ein bug...
(Beachten Sie, dass ich nicht verwenden können, JFileChooser; ich brauche die nativen AWT FileDialog.)
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies nicht geschehen, für mich, auf Windows 7 mit Sun Java 1.5 und 1.6.
Das Verhalten, die ich bekommen hängt etwas an die Einstellung von "Hide Erweiterungen von bekannten Dateitypen" im Windows explorer. Wenn es das ist, dann die kann ich nicht sehen, die Erweiterung in der Datei-dialog, wie man erwarten könnte, aber es hat mich zurückbringen der volle Dateiname.
EDIT: ich erkenne, dass ich falsch war über AWT und native widgets -- verwirrend AWT und Swing.
Ich habe auf der Suche nach einer Antwort auf eben dieses problem erscheint nur auf dem Mac.
Sie haben entweder ein Leben mit dem hässlichen JFileChooser (swing, leicht, nicht nativen look) option, oder eine wenn (Betriebssystem mac) und handhaben die Dinge anders, indem Sie die Datei-Endung am Ende sich selbst.
Es ist ein Mac-Java-AWT-bug, der hoffentlich behoben sein irgendwann.
Hier ist ein Beispiel, wie Sie eine neue Datei im angegebenen Verzeichnis und name der Datei aus FileDialog , Strings aus einem Vektor von Strings.Es funktioniert für mich !
JFileChooser verwenden, aber setzen, dass am Anfang des Programms: