No hay nada malo con CSV hasta cierto punto
CSV funciona bien para datos rígidamente definidos que es poco probable que cambien de formato y no generen muchas sorpresas en el analizador de destinatarios.
Aquí hay una lista práctica de las grandes trampas:
- Escapar "" s dentro de "" s (el campo contiene delimitador de campo)
- "" que contiene CRLF (el campo contiene delimitador de línea)
- Unicode (el formato de texto subyacente puede ser insuficiente)
- Diferentes terminadores de línea para diferentes sistemas operativos (¿CR o CRLF o LF o NUL?)
- Comentarios en línea (línea con el prefijo #, //, -,; etc.)
- Gestión de versiones (la última versión del archivo contiene más o menos campos)
- Diferenciar entre datos NULL y vacíos (, "", está vacío pero ,, ¿es nulo?)
Puede abordar esto con un encabezado de metadatos que describe cómo deben analizarse los campos, pero también puede usar XML. Es debido a este tipo de desastre CSV de forma libre que se inventó. El enfoque XML parece demasiado pesado para lo que, a primera vista, podría ser un problema simple.
Una alternativa popular es la estrategia del "delimitador de caracteres extraños". Esto evita muchos de los problemas de escape anteriores porque usa algo como un | (canalización) para delimitación de campos y un CRLF para la terminación de registros. Esto no soluciona el problema del campo de varias líneas (a menos que use un contador de campo), pero obtiene líneas bien formateadas para humanos.
En general, si solo está buscando una forma simple de manejar este tipo de archivo, en el mundo de Java, simplemente podría lanzar OpenCSV . De esa manera, abstrae todos los problemas en un marco establecido.