目的:给定的文件,确定它是否是给定类型的(XML,JSON,属性等)如何可靠地检测文件类型?
考虑XML的情况下 - 直到我们遇到了这个问题,下面的示例的方式工作得很好:
try {
saxReader.read(f);
} catch (DocumentException e) {
logger.warn(" - File is not XML: " + e.getMessage());
return false;
}
return true;
正如预期的那样,当XML格式良好时,测试会通过并且方法返回true。如果发生错误,文件无法解析,则返回false。
但是,当我们处理格式不正确的XML(仍然是XML)文件时,会出现这种情况。
我宁愿不依赖于.xml
扩展(发生故障,所有的时间),要查找的文件等
内<?xml version="1.0" encoding="UTF-8"?>
串有另一种方式这可以被处理?
你将不得不在文件中看到“怀疑它可能是XML
,尽管DocumentException
被捕获”。这是解析目的所必需的。
均田相关:http://stackoverflow.com/questions/3600222/code-for-identifying-programming-language-in-a-text-file – PeterK 2012-03-16 14:03:44
你可以用” t得到一个明确的答案“什么k文件是否是?“,仅限于”我可以假装它是X型吗?“ (对于零个或更多个X,答案可以是“是”,而不仅仅是零或一个)。但是你可以抛出统计数据,看看是否有很多''<\w+>'(可能是XML),许多''w +“'(可能是JSON)与令牌的总数相比,否则它可能是属性。 – harold 2012-03-16 15:12:05