Jam*_*sev 8 java algorithm file-type
目标:给定文件,确定它是否是给定类型(XML,JSON,属性等)
考虑XML的情况 - 在我们遇到这个问题之前,以下示例方法工作正常:
try {
saxReader.read(f);
} catch (DocumentException e) {
logger.warn(" - File is not XML: " + e.getMessage());
return false;
}
return true;
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,当XML格式正确时,测试将通过,方法将返回true.如果发生错误并且无法解析文件,则返回false.
但是,当我们处理格式错误的XML(仍然是XML)文件时,这会中断.
我宁愿不依赖.xml扩展(一直失败),<?xml version="1.0" encoding="UTF-8"?>在文件中寻找字符串等.
还有另一种方法可以处理吗?
有什么办法看到里面的文件,以"怀疑它可能会XML虽然DocumentException被抓了".这是解析目的所必需的.
文件类型检测工具:
Apache Tika给我的问题最少,与Java 7不同,它不是特定于平台的:Files.probeContentType
import java.io.File;
import java.io.IOException;
import javax.activation.MimeType;
import org.apache.tika.Tika;
File inputFile = ...
String type = new Tika().detect(inputFile);
System.out.println(type);
Run Code Online (Sandbox Code Playgroud)
对于xml文件,我得到了'application/xml'
对于属性文件,我得到'text/plain'
但是,你可以为新的Tika添加一个探测器()
<dependency>
<groupId>org.apache.tika</groupId>
<artifactId>tika-core</artifactId>
<version>1.xx</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
13158 次 |
| 最近记录: |