如何知道文件类型?

时间:2012-09-24 07:45:50

标签: java android file file-type

我想知道该文件是音频mp3aac等),视频mp4wmv3gp等),文档txtrtfdocdocx,{{ 1}},xlsxlsxppt等)或未知(在不久的将来,没有针对单个应用程序的扩展程序和其他自定义扩展程序)

我需要在Android中实现它。我想我可以找到文件的扩展名并确定其类型?或者我不需要知道扩展名吗?

我只想知道文件类型。

5 个答案:

答案 0 :(得分:1)

import java.net.FileNameMap;
import java.net.URLConnection;

public class FileUtils {

public static String getMimeType(String fileUrl)
  throws java.io.IOException {
      FileNameMap fileNameMap = URLConnection.getFileNameMap();
      String type = fileNameMap.getContentTypeFor(fileUrl);

     return type;
}

public static void main(String args[]) throws Exception {
      System.out.println(FileUtils.getMimeType("file://c:/temp/test.TXT"));
     // output :  text/plain
   }
}

http://www.rgagnon.com/javadetails/java-0487.html

答案 1 :(得分:0)

在Android上,你可以尝试这样的事情:

File f = <YOUR FILE>

String path = f.getAbsolutePath();
String fileExtension = null;
int dotPos = path.lastIndexOf('.');
if (0 <= dotPos) {
    fileExtension = path.substring(dotPos + 1);
}

if (!TextUtils.isEmpty(fileExtension )) {
    String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(fileExtension.toLowerCase());
    if (!TextUtils.isEmpty(mime)) {
        if (mime.startsWith("text")) {
        // TEXT FILE
        } else if (mime.startsWith("image")) {
        // IMAGE FILE
        }
    }
}

答案 2 :(得分:0)

您可以尝试使用guessContentTypeFromName()从文件扩展名猜测文件类型,也可以尝试使用guessContentTypeFromStream()从内容中猜测文件类型。

答案 3 :(得分:0)

您可以使用mime-util库。我的示例代码将获取文件的mime类型。

    String imagePath = "/tmp/test.txt";
    File file = new File(imagePath);

    if (MimeUtil.getMimeDetector(MagicMimeMimeDetector.class.getName()) == null)  {
        MimeUtil.registerMimeDetector(MagicMimeMimeDetector.class.getName());
    }
    Collection<MimeType> mimeTypes = MimeUtil.getMimeTypes(file);
    for (MimeType mimeType : mimeTypes) {
        System.out.println(mimeType.getMediaType());
    }

答案 4 :(得分:0)

找出文件扩展名的最短方法是使用lastIndexOf('.'),假设文件名包含扩展名。请检查以下代码

String fileName = "test.jpg";
int i = fileName.lastIndexOf('.');
String fileExtension = fileName.substring(i+1);
Log.v("FILE EXTENSION: ",fileExtension);