2012-09-24 53 views
1

我想知道文件是否音频mp3aac等),视频mp4wmv3gp等),文件txtrtfdocdocxxlsxlsxppt,html等)或未知(在不久的将来没有扩展和其他定制扩展特定于单个应用程序)如何知道文件类型?

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

我只想知道文件类型。

+0

我曾经被张贴作为一个答案这里的类:http://stackoverflow.com/a/10140531/293280 –

回答

0

您可以尝试使用guessContentTypeFromName()猜测从文件扩展名的文件类型,或者你可以尝试使用猜测从内容的文件类型guessContentTypeFromStream()

+1

如果你看看URLConnection.guessContentTypeFromStream的'源()'你会发现它只知道HTML,XML,zip文件和GIF图像。它不能识别问题要求的大部分文件类型。 'guessContentTypeFromName()'有一个更大的数据库,但是提问者明确要求识别没有扩展名的文件。 –

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 
     } 
    } 
} 
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

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()); 
    } 
0

找出文件扩展名的捷径就是利用lastIndexOf('.')假设文件名包含扩展。请检查下面的代码

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