明确一点,我并不是在寻找MIME类型。
假设我有以下输入:/path/to/file/foo.txt
我想要一种方法来分解这个输入,特别是扩展为.txt。在Java中有任何内置的方法来做到这一点吗?我希望避免编写自己的解析器。
明确一点,我并不是在寻找MIME类型。
假设我有以下输入:/path/to/file/foo.txt
我想要一种方法来分解这个输入,特别是扩展为.txt。在Java中有任何内置的方法来做到这一点吗?我希望避免编写自己的解析器。
当前回答
在不使用任何库的情况下,你可以使用String方法,如下所示:
String[] splits = fileNames.get(i).split("\\.");
String extension = "";
if(splits.length >= 2)
{
extension = splits[splits.length-1];
}
其他回答
String extension = com.google.common.io.Files.getFileExtension("fileName.jpg");
在本例中,使用FilenameUtils。getExtension来自Apache Commons IO
下面是一个如何使用它的例子(你可以指定完整路径或只是文件名):
import org.apache.commons.io.FilenameUtils;
// ...
String ext1 = FilenameUtils.getExtension("/path/to/file/foo.txt"); // returns "txt"
String ext2 = FilenameUtils.getExtension("bar.exe"); // returns "exe"
Maven的依赖:
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
Gradle Groovy DSL
implementation 'commons-io:commons-io:2.6'
Gradle Kotlin DSL
implementation("commons-io:commons-io:2.6")
其他https://search.maven.org/artifact/commons-io/commons-io/2.6/jar
流利的方式:
fileExtension(String fileName) { 返回Optional.of (fileName.lastIndexOf(“。”))。过滤器(i-> i >= 0) .filter(i-> i > fileName.lastIndexOf(File.separator)) . map(文件名::substring) .orElse (" "); }
JFileChooser怎么样?这并不简单,因为你需要解析它的最终输出…
JFileChooser filechooser = new JFileChooser();
File file = new File("your.txt");
System.out.println("the extension type:"+filechooser.getTypeDescription(file));
这是一个MIME类型…
好吧……我忘了你不想知道它的MIME类型。
下面链接中的有趣代码: http://download.oracle.com/javase/tutorial/uiswing/components/filechooser.html
/*
* Get the extension of a file.
*/
public static String getExtension(File f) {
String ext = null;
String s = f.getName();
int i = s.lastIndexOf('.');
if (i > 0 && i < s.length() - 1) {
ext = s.substring(i+1).toLowerCase();
}
return ext;
}
相关问题: 我如何修剪一个文件扩展名从一个字符串在Java?
我的肮脏和可能最小的使用String.replaceAll:
.replaceAll("^.*\\.(.*)$", "$1")
请注意,第一个*是贪婪的,所以它会尽可能地抓取大多数可能的字符,然后只剩下最后一个点和文件扩展名。