明确一点,我并不是在寻找MIME类型。
假设我有以下输入:/path/to/file/foo.txt
我想要一种方法来分解这个输入,特别是扩展为.txt。在Java中有任何内置的方法来做到这一点吗?我希望避免编写自己的解析器。
明确一点,我并不是在寻找MIME类型。
假设我有以下输入:/path/to/file/foo.txt
我想要一种方法来分解这个输入,特别是扩展为.txt。在Java中有任何内置的方法来做到这一点吗?我希望避免编写自己的解析器。
当前回答
这个特别的问题给了我很多麻烦,然后我找到了一个非常简单的解决方案,我张贴在这里。
file.getName().toLowerCase().endsWith(".txt");
就是这样。
其他回答
从所有其他答案中可以明显看出,没有足够的“内置”函数。这是一种安全简单的方法。
String getFileExtension(File file) {
if (file == null) {
return "";
}
String name = file.getName();
int i = name.lastIndexOf('.');
String ext = i > 0 ? name.substring(i + 1) : "";
return ext;
}
如何(使用Java 1.5 RegEx):
String[] split = fullFileName.split("\\.");
String ext = split[split.length - 1];
这个特别的问题给了我很多麻烦,然后我找到了一个非常简单的解决方案,我张贴在这里。
file.getName().toLowerCase().endsWith(".txt");
就是这样。
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;
注意,这个静态方法使用这里找到的规范来检索“内容类型”,而“内容类型”是可以变化的。
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?