使用正则表达式检查文件扩展名

时间:2013-05-17 14:36:06

标签: java regex jfilechooser

我正在编写一个打开文件的程序,并将所有文件内容加载到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
}

有什么建议吗?

1 个答案:

答案 0 :(得分:3)

你必须使用正则表达式吗?最合适的方法是FileNameExtensionFilter

示例(来自FileNameExtensionFilter API):

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