2010-04-28 161 views
3

我有這個問題的工作,但我想知道是否有更好的方式添加文件擴展名?Java JFileChooser getAbsoluteFile添加文件擴展名

我在做什麼現在的問題是:

String filePath = chooser.getSelectedFile().getAbsoluteFile() + ".html"; 

IM將硬編碼的擴展。然後保存到它。

只是想知道是否有一個更強大/合乎邏輯的方式可以實現?

謝謝你的時間。

編輯:我問這個,因爲我希望我的應用程序跨平臺可移植。所以手動添加.html我可能會使這個窗口的唯一解決方案。

編輯:我認爲ive衝浪足夠知道.html硬編碼是安全的,因爲我還沒有發現任何文件說,不採取這種做法(不完全確定)。

問題:如果我想以另一種格式保存文件,例如文本,例如我如何檢測用戶選擇了哪種格式?

FileNameExtensionFilter可以將過濾器添加到對話框中,但是如何獲取所選文件類型的返回值?

編輯:我研究了this但仍不清楚如何檢索用戶選擇的文件類型。

編輯:這是我的問題的另一種方式:

alt text http://img98.imageshack.us/img98/4904/savef.jpg我的問題是我怎麼能檢索/找出哪些用戶已選擇的保存格式的兩個過濾器中的一個。 HTML還是JPEG?我如何從JFileChooser檢索這個信息?謝謝。

編輯:發現了一些東西:它與JFileChooser.getFileFilter() 有關,你的幫助仍然歡迎。

編輯:getFileFilter()和FileNameExtensionFilter比較解決了這個問題。

回答

2

這裏是代碼片段,解決了這個問題:

JFileChooser chooser = new JFileChooser(); 
chooser.setMultiSelectionEnabled(false); 
chooser.setAcceptAllFileFilterUsed(false); 

FileNameExtensionFilter filter = new FileNameExtensionFilter("HTML Documents", "htm", "html"); 
chooser.setFileFilter(filter); 

int option = chooser.showSaveDialog(ChatGUI.this); 
if (option == JFileChooser.APPROVE_OPTION) { 
    // Set up document to be parsed as HTML 
    StyledDocument doc = (StyledDocument)textPaneHistory.getDocument(); 
    HTMLEditorKit kit = new HTMLEditorKit(); 

    BufferedOutputStream out; 

    try { 
     System.out.println(chooser.getFileFilter()); 

     if (chooser.getFileFilter() == filter) 
      System.out.println("ha ha"); 
    } 
} 
0

我不明白你在做什麼。你是否試圖用其他格式保存選定的文件?所選文件的路徑將包含文件擴展名,因此您不需要手動添加它。例如,如果選擇文件anything.html,則以下內容將在屏幕上顯示「/Users/banang/Documents/anything.html」。

JFileChooser chooser = new JFileChooser(); 
chooser.showSaveDialog(null); 
System.err.println(chooser.getSelectedFile().getCanonicalPath()); 

請嘗試澄清一下您的問題。

1

你可能在尋找這樣的:

訣竅在於鑄造返回的FileFilter到的FileNameExtensionFilter,然後應用getExtensions()。

JFileChooser fileChooser = new JFileChooser(""); 

// Prevent user to use the default All Files option 
fileChooser.setAcceptAllFileFilterUsed(false); 

[...] 

// Get the FileFilter 
FileFilter ff = fileChooser.getFileFilter(); 

// Cast the FileFilter to FileNameExtensionFilter 
FileNameExtensionFilter extFilter = (FileNameExtensionFilter)ff; 

// Get the Extension 
String ext = extFilter.getExtensions()[0]; 

或者,使其成爲緊湊:

ext = ((FileNameExtensionFilter)fileChooser.getFileFilter()).getExtensions()[0];