我使用java.awt.FileDialog创建保存文件的对话框。问题是,当我指定一个建议的(默认)文件名时,FileDialog会剥离其扩展名。例如:以Java条形式保存FileDialog初始文件扩展名
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());
}
}
我会想到的是,FileDialog的出现时,默认的文件名是“Untitled.txt”,而是它只是“无题”。当用户点击保存时,我找回没有扩展名的文件名。 FileDialog可以在Windows和OS X上执行此操作。
我不明白。为什么FileDialog会故意删除扩展名?这是否有一些合乎逻辑的原因?文档不讨论它。作为一种变通方法,我可以简单地添加扩展到FileDialog的返回了,不过,这似乎是一个错误的字符串...
(请注意,我不能使用的JFileChooser。我需要本地AWT的FileDialog)
谢谢你的洞察力。您的确是正确的,Windows上的行为取决于“隐藏扩展名”设置。即使“隐藏扩展名”处于打开状态,并且用户没有明确添加扩展名,它也会将扩展名返回给文件名。 – vocaro 2011-02-28 17:49:44
这个问题似乎与Java的Mac版本是分开的。 Mac还具有“隐藏扩展名”设置;但是,如果该设置处于打开状态,则扩展名将隐藏在对话框文本字段中,但返回的字符串不包含扩展名。这显然是一个跨平台的错误,所以我会向Apple提交一份报告。再次感谢你的帮助。 – vocaro 2011-02-28 17:54:47
@vocaro你提交了一份报告吗?任何链接?你是如何解决这个问题的? – Igor 2013-03-11 19:49:11