1

我有这个代码,它只接受那些.bmp格式 的图像

String format="";
if(pic_sel_file.toLowerCase().endsWith(".bmp"))
    format="BMP";

如何更改此代码以使其可以接受任何文件格式(.jpg、.tif 等)的图像?

4

3 回答 3

4

为避免出现多个if-then-else语句,您可以使用正则表达式对文件扩展名类型列表进行匹配。endsWith不采用正则表达式,所以你可以这样做:

Matcher m = Pattern.compile("(?i).*\\.(bmp|gif|jpg|tif)$").matcher(pic_sel_file);
if (m.matches()) {
   format = m.group(1).toUpperCase();
}
  • (?i)忽略大小写

  • \\.转义点字符

  • (bmp|...图像类型

  • $行结束

于 2013-02-02T12:03:49.477 回答
1

如果你想避免正则表达式,你可以使用一个集合并循环它:

List<String> allowedFileEndings = Arrays.asList("bmp", "png", "gif"); //or array
for (String allowedFileEndingsItem : allowedFileEndings) {
    if(pic_sel_file.toLowerCase().endsWith(allowedFileEndingsItem)) // or "." + allowedFileEndingsItem
    {
        format = allowedFileEndingsItem; // uppercase if you want
        break;
    }
}

我什至会考虑对文件格式使用枚举,这可以使格式处理更轻松。

于 2013-02-02T12:51:15.893 回答
0

我怀疑这整个任务会更适合JFileChooser带有支持的图像类型的过滤器

有关的

于 2013-02-03T03:52:21.260 回答