获取tar.gz等特殊情况的文件扩展名

Ber*_*ice 5 java file utility-method

我需要从文件名中提取扩展名.

我知道这可以用于单个扩展,例如,.gz或者.tar通过使用filePath.lastIndexOf('.')或使用FilenameUtils.getExtension(filePath)来自Apache commons-io的实用程序方法.

但是,如果我有一个扩展名的文件.tar.gz怎么办?如何管理包含.字符的扩展名的文件?

grk*_*vlt 5

如果您知道哪些扩展是重要的,您可以简单地明确检查它们。您将拥有一组已知扩展,如下所示:

List<String> EXTS = Arrays.asList("tar.gz", "tgz", "gz", "zip");
Run Code Online (Sandbox Code Playgroud)

您可以像这样获得(第一个)最长匹配扩展名:

String getExtension(String fileName) {
  String found = null;
  for (String ext : EXTS) {
    if (fileName.endsWith("." + ext)) {
      if (found == null || found.length() < ext.length()) {
        found = ext;
      }
    }
  }
  return found;
}
Run Code Online (Sandbox Code Playgroud)

所以调用getExtension("file.tar.gz")会返回"tar.gz"

如果您有大小写混合的名称,也许可以尝试将检查更改filename.toLowerCase().endsWith("." + ext)为循环内部。