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

标签 java regex jfilechooser

我正在编写一个程序,该程序打开一个文件并将所有文件内容加载到 JTextArea 中。我想限制用户打开不同的文件格式。我想要接受的格式包括: .js .php .html .asmx .htm .css 基本上任何在网络浏览器中可读的格式。

执行此操作的最佳方法是什么?

我应该使用正则表达式来检查文件名是否符合我的条件,或者是否有更简单的解决方案?

这是我的想法:

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
}

有什么建议吗?

最佳答案

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

示例(来自 FileNameExtensionFilter API ):

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

关于java - 使用正则表达式检查文件扩展名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16611693/

相关文章:

java - 如何以编程方式忽略多个失败的junit测试?

java - 多种方法和无限循环发生的问题

java - JFileChooser - 不浏览 Windows Server 2008 机器中的 'Mounted Drives'

java - 使用 Java 删除 CSS 注释

Java:在多个线程之间共享变量

java - 如何使用 org.json.JSONObject(Object) 忽略字段

java - Vaadin:如何使 validator 仅接受数字和一位小数

java - 将 JFileChooser 添加到 Android studio

r - 在整个分隔符处分割,但不是分隔符的每个组成部分

python - 查找并替换引号之间的字符串