Disculpe el n00bness de esta pregunta, pero tengo una aplicación web en la que deseo enviar un archivo potencialmente grande al servidor y hacer que analice el formato. Estoy usando el framework Play20 y soy nuevo en Scala.Analizando un archivo con BodyParser en Scala Play20 con nuevas líneas
Por ejemplo, si tengo un csv, me gustaría dividir cada fila por "," y finalmente crear un List[List[String]]
con cada campo.
Actualmente, estoy pensando que la mejor manera de hacerlo es con un BodyParser (pero podría estar equivocado). Mi código es algo como:
Iteratee.fold[String, List[List[String]]]() {
(result, chunk) =>
result = chunk.splitByNewLine.splitByDelimiter // Psuedocode
}
Mi primera pregunta es, ¿cómo manejar una situación como la de abajo, donde una parte se ha dividido en el medio de una línea:
Chunk 1:
1,2,3,4\n
5,6
Chunk 2:
7,8\n
9,10,11,12\n
mi La segunda pregunta es, ¿escribir mi propio BodyParser es la forma correcta de hacerlo? ¿Hay mejores formas de analizar este archivo? Mi principal preocupación es que quiero permitir que los archivos sean muy grandes para poder descargar un búfer en algún momento y no guardar todo el archivo en la memoria.
Este código parece prometedor, pero me va a tomar un poco de entender ... todos los operadores Scala tiene le da una gran curva de aprendizaje. –
Absolutamente no, puede volver a escribir el código anterior reemplazando><> con componer, & >> por transformación, | >>> ejecutando. Estos operadores no son de scala sino que son métodos de los objetos correspondientes. – Sadache
Ah sí, leí nuevamente los documentos en Enumeratees nuevamente y esto tiene sentido. ¡Gracias! –