小智 16
我使用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<MediaType, Parser>());
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);
}
}
Run Code Online (Sandbox Code Playgroud)
我希望这将有所帮助.摘自一个不是我的例子:
import javax.activation.MimetypesFileTypeMap;
import java.io.File;
class GetMimeType {
public static void main(String args[]) {
File f = new File("test.gif");
System.out.println("Mime Type of " + f.getName() + " is " +
new MimetypesFileTypeMap().getContentType(f));
// expected output :
// "Mime Type of test.gif is image/gif"
}
Run Code Online (Sandbox Code Playgroud)
}
对于excel和csv类型也是如此.没有测试过.
我想出了一个更便宜的方式 java.nio.file.Files
public String getContentType(File file) throws IOException {
return Files.probeContentType(file.toPath());
}
Run Code Online (Sandbox Code Playgroud)
- 要么 -
public String getContentType(Path filePath) throws IOException {
return Files.probeContentType(filePath);
}
Run Code Online (Sandbox Code Playgroud)
希望有所帮助.
干杯.
| 归档时间: |
|
| 查看次数: |
40113 次 |
| 最近记录: |