我有获取mime类型的代码。它似乎工作。当我将mimeType放在if语句中时,我没有得到所需的效果。这是片段。
获取mime类型 -
MimetypesFileTypeMap mimeTypesMap = new MimetypesFileTypeMap();
String mimeType = mimeTypesMap.getContentType(file);
现在我只想打开一个文件,如果mime类型是文本 -
if (file.isFile()) {
try {
if (mimeType == "text/plain") openFile(file);
} catch (IOException e) {
e.printStackTrace();
System.err.print(" Cannot process file....\n");
}
}
这不会打开文本文件。关于它为什么不起作用的任何想法? openFile(文件)工作,不是问题。 file是一个文件对象。感谢。
答案 0 :(得分:1)
您使用==
比较MIME类型,而不是String#equals()
- 它是一个字符串,是吗?你可能必须这样做:
if (mimeType.equals("text/plain")) openFile(file);
或者更好的是:
if ("text/plain".equals(mimeType)) openFile(file);
因为这可以防止NPE妨碍你。
答案 1 :(得分:0)
也许mime类型只是text
?
MIME类型文件搜索顺序:
MimetypesFileTypeMap查找 用户系统中的各个位置 对于MIME类型文件条目。什么时候 请求用于搜索MIME 它是MimetypesFileTypeMap中的类型 搜索中的MIME类型文件 以下顺序:
- 以编程方式将条目添加到MimetypesFileTypeMap实例。
- 用户主目录中的.mime.types文件。
- 文件/lib/mime.types。
- 名为META-INF / mime.types。
的文件或资源- 名为META-INF / mimetypes.default的文件或资源(通常为 仅在activation.jar中找到 文件)。
醇>
找到此文件,找出为.txt文件指定的mime类型。资料来源:link