我使用
Apache Tika,它使用魔术字节模式和globbing提示(文件扩展名)来识别文件类型,以检测MIME类型.它还支持对文件内容的其他解析(我不真正使用).
以下是一个简单而肮脏的例子,说明如何使用Tika来检测文件类型,而不对文件执行任何额外的解析:
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import org.apache.tika.Metadata.HttpHeaders;
import org.apache.tika.Metadata.Metadata;
import org.apache.tika.Metadata.TikaMetadataKeys;
import org.apache.tika.mime.MediaType;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.apache.tika.parser.Parser;
import org.xml.sax.helpers.DefaultHandler;
public class Detector {
public static void main(String[] args) throws Exception {
File file = new File("/pats/to/file.xls");
AutoDetectParser parser = new AutoDetectParser();
parser.setParsers(new HashMap());
Metadata Metadata = new Metadata();
Metadata.add(TikaMetadataKeys.RESOURCE_NAME_KEY,file.getName());
InputStream stream = new FileInputStream(file);
parser.parse(stream,new DefaultHandler(),Metadata,new ParseContext());
stream.close();
String mimeType = Metadata.get(HttpHeaders.CONTENT_TYPE);
System.out.println(mimeType);
}
}