我想知道该文件是音频(mp3
,aac
等),视频(mp4
, wmv
,3gp
等),文档(txt
,rtf
,doc
,docx
,{{ 1}},xls
,xlsx
,ppt
等)或未知(在不久的将来,没有针对单个应用程序的扩展程序和其他自定义扩展程序)
我需要在Android中实现它。我想我可以找到文件的扩展名并确定其类型?或者我不需要知道扩展名吗?
我只想知道文件类型。
答案 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
}
}
答案 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);