引入依赖
org.apache.tika tika-core1.20
或
compile 'org.apache.tika:tika-core:1.20'
工具类
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.apache.tika.metadata.HttpHeaders;
import org.apache.tika.metadata.metadata;
import org.apache.tika.metadata.TikametadataKeys;
import org.apache.tika.parser.AutoDetectParser;
import org.apache.tika.parser.ParseContext;
import org.xml.sax.helpers.DefaultHandler;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.HashMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@Slf4j
public class TikaToolUtil {
public static String getMimeType(File file) {
if (file.isDirectory()) {
return "the target is a directory";
}
AutoDetectParser parser = new AutoDetectParser();
parser.setParsers(new HashMap<>());
metadata metadata = new metadata();
metadata.add(TikametadataKeys.RESOURCE_NAME_KEY, file.getName());
try (InputStream stream = new FileInputStream(file)) {
parser.parse(stream, new DefaultHandler(), metadata, new ParseContext());
} catch (Exception e) {
log.error(e.getMessage());
}
return metadata.get(HttpHeaders.CONTENT_TYPE);
}
public static boolean isImage(File file) {
String type = getMimeType(file);
System.out.println(type);
Pattern p = Pattern.compile(Type.IMAGE.name);
Matcher m = p.matcher(type);
return m.matches();
}
public static boolean isZip(File file) {
String type = getMimeType(file);
System.out.println(type);
Pattern p = Pattern.compile(Type.ZIP.name);
Matcher m = p.matcher(type);
return m.matches();
}
public static boolean isDicom(File file) {
String type = getMimeType(file);
Pattern p = Pattern.compile(Type.DCM.name);
Matcher m = p.matcher(type);
return m.matches();
}
@Getter
@AllArgsConstructor
public enum Type {
DCM("application/dicom"),
ZIP("application/zip"),
IMAGE("image/.*"),
VIDEO("video
public static void main(String[] args) throws Exception {
FileInputStream is = new FileInputStream("F:\相册\微信图片\03.jpg");
byte[] b = new byte[3];
is.read(b, 0, b.length);
String xxx = bytesToHexString(b);
xxx = xxx.toUpperCase();
System.out.println("头文件是:" + xxx);
String ooo = TypeDict.checkType(xxx);
System.out.println("后缀名是:" + ooo);
}
}
public class TypeDict {
public static String checkType(String xxxx) {
switch (xxxx) {
case "FFD8FF": return "jpg";
case "89504E": return "png";
case "474946": return "jif";
default: return "0000";
}
}
}
以上这篇判断java文件类型TikaToolKit的实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持考高分网。



