明确一点,我并不是在寻找MIME类型。
假设我有以下输入:/path/to/file/foo.txt
我想要一种方法来分解这个输入,特别是扩展为.txt。在Java中有任何内置的方法来做到这一点吗?我希望避免编写自己的解析器。
明确一点,我并不是在寻找MIME类型。
假设我有以下输入:/path/to/file/foo.txt
我想要一种方法来分解这个输入,特别是扩展为.txt。在Java中有任何内置的方法来做到这一点吗?我希望避免编写自己的解析器。
当前回答
Java有一个内置的方法来处理这个问题,在Java .nio.file. files类中,这可能适合你的需要:
File f = new File("/path/to/file/foo.txt");
String ext = Files.probeContentType(f.toPath());
if(ext.equalsIgnoreCase("txt")) do whatever;
注意,这个静态方法使用这里找到的规范来检索“内容类型”,而“内容类型”是可以变化的。
其他回答
流利的方式:
fileExtension(String fileName) { 返回Optional.of (fileName.lastIndexOf(“。”))。过滤器(i-> i >= 0) .filter(i-> i > fileName.lastIndexOf(File.separator)) . map(文件名::substring) .orElse (" "); }
// Modified from EboMike's answer
String extension = "/path/to/file/foo.txt".substring("/path/to/file/foo.txt".lastIndexOf('.'));
扩展应该有“.txt”在它运行时。
String extension = com.google.common.io.Files.getFileExtension("fileName.jpg");
private String getExtension(File file)
{
String fileName = file.getName();
String[] ext = fileName.split("\\.");
return ext[ext.length -1];
}
如果使用Guava库,可以求助于Files实用程序类。它有一个特定的方法getFileExtension()。例如:
String path = "c:/path/to/file/foo.txt";
String ext = Files.getFileExtension(path);
System.out.println(ext); //prints txt
另外,你也可以用类似的函数getNameWithoutExtension()获取文件名:
String filename = Files.getNameWithoutExtension(path);
System.out.println(filename); //prints foo