Цель: данный файл, определить, является ли оно данного типа (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
Вы можете» t получить окончательный ответ на «что k ind файла это? », только для« могу ли я притворяться, что это тип X? » (ответ может быть «да» на ноль или более X, а не только на ноль или один).Но вы можете бросить статистику и посмотреть, есть ли много из '<\w+>' (возможно, XML), много '' \ w + "' (вероятно, JSON) по сравнению с общим количеством токенов, и в противном случае это могут быть свойства. – harold