我使用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