Objetivo: dado el archivo, determinar si se trata de un tipo determinado (XML, JSON, propiedades, etc)¿Cómo detectar de manera confiable los tipos de archivos?
Considere el caso de XML - Hasta nos encontramos con este tema, el siguiente enfoque de la muestra funcionó bien:
try {
saxReader.read(f);
} catch (DocumentException e) {
logger.warn(" - File is not XML: " + e.getMessage());
return false;
}
return true;
Como se esperaba, cuando XML está bien formado, la prueba pasaría y el método volvería a ser cierto. Si sucede algo malo y no se puede analizar el archivo, se devolverá falso.
Esto se rompe sin embargo cuando tratamos con un archivo XML mal formado (aún XML).
prefiero no confiar en .xml
extensión (falla todo el tiempo), buscando <?xml version="1.0" encoding="UTF-8"?>
cadena dentro del archivo, etc.
¿Hay otra manera esto puede ser manejado?
Lo que debería ver dentro del archivo para "sospechar que puede ser XML
aunque DocumentException
fue capturado". Esto es necesario para el análisis sintáctico.
Un poco relacionados: http://stackoverflow.com/questions/3600222/code-for-identifying-programming-language-in-a-text-file – PeterK
Usted puede' obtener una respuesta definitiva a "qué k ind of file is it? ", solo para" ¿puedo pretender que es de tipo X? " (la respuesta puede ser "sí" a cero o más X, no solo cero o uno).Pero puede agregar estadísticas y ver si hay muchas '<\w+>' (probablemente XML), muchas '" \ w + "' (probablemente JSON) en comparación con el número total de tokens y, de lo contrario, podrían ser propiedades. – harold