我需要根据其mime类型打开一个文件

时间:2009-12-21 02:46:12

标签: java types mime

我有获取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是一个文件对象。感谢。

2 个答案:

答案 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类型文件   以下顺序:

     
      
  1. 以编程方式将条目添加到MimetypesFileTypeMap实例。
  2.   
  3. 用户主目录中的.mime.types文件。
  4.   
  5. 文件/lib/mime.types。
  6.   
  7. 名为META-INF / mime.types。
  8. 的文件或资源   
  9. 名为META-INF / mimetypes.default的文件或资源(通常为   仅在activation.jar中找到   文件)。
  10.   

找到此文件,找出为.txt文件指定的mime类型。资料来源:link