6

ファイル名から拡張子を抽出する必要があります。

これは、Apache commons-io のようなユーティリティ メソッドを使用.gzまたは使用することによって、単一の拡張機能に対して実行できることを知っています。.tarfilePath.lastIndexOf('.')FilenameUtils.getExtension(filePath)

しかし、拡張子が のようなファイルがある場合はどうすればよい.tar.gzでしょうか。.文字を含む拡張子を持つファイルを管理するにはどうすればよいですか?

4

4 に答える 4

5

重要な拡張機能がわかっている場合は、それらを明示的に確認するだけです。次のような既知の拡張機能のコレクションがあります。

List<String> EXTS = Arrays.asList("tar.gz", "tgz", "gz", "zip");

次のように、(最初の) 最長一致拡張子を取得できます。

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;
}

したがって、呼び出しgetExtension("file.tar.gz")は を返し"tar.gz"ます。

大文字と小文字が混在する名前がある場合は、チェックをfilename.toLowerCase().endsWith("." + ext)ループ内に変更してみてください。

于 2013-07-16T13:58:33.263 に答える
3

ファイルの拡張子は 1 つだけです。

ファイルがある場合はtest.tar.gz

  • .gzは拡張子で、
  • test.tarベースネームです!

.tarこの場合、拡張子の一部ではなく、ベース名の一部です!

ファイルを としてエンコードしtarたいgz場合は、.tgz. これらの.tar.gzファイルを処理する必要がある場合は、ファイルの名前を に変更するなどの回避策を講じる必要がありますtest.tgz

于 2013-07-16T12:49:31.407 に答える