需要明确的是,我不是在寻找 MIME 类型。
假设我有以下输入: /path/to/file/foo.txt
我想要一种方法来分解此输入,特别是 .txt
用于扩展。在 Java 中有没有内置的方法可以做到这一点?我想避免编写自己的解析器。
原文由 longda 发布,翻译遵循 CC BY-SA 4.0 许可协议
你真的需要一个“解析器”吗?
String extension = "";
int i = fileName.lastIndexOf('.');
if (i > 0) {
extension = fileName.substring(i+1);
}
假设您正在处理类似 Windows 的简单文件名,而不是像 archive.tar.gz
这样的文件名。
顺便说一句,如果一个目录可能有一个“.”,但文件名本身没有(比如 /path/to.a/file
),你可以这样做
String extension = "";
int i = fileName.lastIndexOf('.');
int p = Math.max(fileName.lastIndexOf('/'), fileName.lastIndexOf('\\'));
if (i > p) {
extension = fileName.substring(i+1);
}
原文由 EboMike 发布,翻译遵循 CC BY-SA 3.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
3 回答1.7k 阅读✓ 已解决
在这种情况下,使用 Apache Commons IO 中的 FilenameUtils.getExtension
以下是如何使用它的示例(您可以指定完整路径或仅指定文件名):
Maven 依赖项:
Gradle Groovy DSL
Gradle 科特林 DSL
其他 https://search.maven.org/artifact/commons-io/commons-io/2.6/jar