2013-05-17 83 views
0

我正在編寫一個程序,用於打開文件並將所有文件內容加載到JTextArea中。我想限制用戶能夠打開不同的文件格式。我想要接受的格式包括:.js .php .html .asmx .htm .css基本上可以在Web瀏覽器中閱讀的任何格式。使用正則表達式檢查文件擴展名

這樣做的最好方法是什麼?

我應該使用正則表達式來檢查文件的名稱是否符合我的標準,或者是否有更簡單的解決方案?

這裏是什麼樣的我腦子裏想的:

String fileExtensions = "(.js|.php|.html|.asmx|.htm|.css)$"; // $ end of line regex 
JFileChooser fileChooser = new JFileChooser(); 
int returnValue = fileChooser.showOpenDialog(null); 

if (returnValue == JFileChooser.APPROVE_OPTION) { 
    File file = fileChooser.getSelectedFile(); 
    String fileName = file.toString(); 
    Pattern pattern = Pattern.compile(fileExtensions); 
    Matcher matcher = pattern.matcher(fileName); 
    if (matcher.find()) { 
     openAndReadFile(); // opens the file and outputs contents 
    } else { 
     // prompt the user to open a different file 
    } 
} else { 
    // do nothing because cancel was pressed 
} 

有什麼建議?

回答

3

你必須使用正則表達式嗎?最合適的方式做,這將是一個FileNameExtensionFilter

示例(從FileNameExtensionFilter API):

FileFilter filter = new FileNameExtensionFilter("JPEG file", "jpg", "jpeg"); 
JFileChooser fileChooser = ...; 
fileChooser.addChoosableFileFilter(filter); 
+0

不,我沒有。我正在尋找檢查這些類型的擴展名的文件名的最有效的方法。不知道我可以使用擴展過濾器,我將不得不考慮這一點,在此先感謝。 –

+0

@ inner_class7 classic [XY問題](http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem):)。無論如何是正確的/首選的方法。 – Pshemo

+0

還有一個問題呢?有了這個,你可以創建一個多級或多擴展篩選器或我必須創建多個篩選器,每次我想檢查文件的名稱? –

相關問題