, поэтому я получаю файл CSV от внешнего интерфейса, и мне нужно сжать его и сохранить в MySql DB. Проблема в том, что после того, как я распаковал файл обратно, он изменился и больше не имеет структуры CSV (я сжимаю, используя ZIP, но я также пробовал gzip). Например, это файл перед сжатием
header1,header2,header3,header4,header5
val,val2,val3,val4,val5
val6,val7,val8,val9,val10
И этот файл после распаковки
header1,header2,header3,header4,header5val1,val2,val3,val4,val5val6,val7,val8.val9.val10
Мне нужно отправить распакованный файл в службу анализа временных рядов python и он не может разобрать его должным образом.
Я сжимаю / распаковываю файл напрямую как byteArray, и я уверен, что проблема заключается в сжатии, потому что я попытался сохранить и извлечь несжатый CSV, и он работает нормально. Заранее спасибо!
Вот код, используемый для сжатия
@Throws(Exception::class)
fun compressFile(file : ByteArray) : ByteArray {
val baos = ByteArrayOutputStream()
val zos = ZipOutputStream(baos)
val entry = ZipEntry("data.csv")
entry.size = file.size.toLong()
zos.putNextEntry(entry)
zos.write(file)
zos.closeEntry()
zos.close()
return baos.toByteArray()
}
А вот код, используемый для распаковки
@Throws(Exception::class)
fun decompressFile(file : ByteArray): ByteArray {
if (file.isEmpty()) return file
val gis = ZipInputStream(ByteArrayInputStream(file))
gis.nextEntry
val bf = BufferedReader(InputStreamReader(gis, "UTF-8"))
var outStr = ""
var line: String
while (bf.readLine().also { line = it ?: "" } != null) {
outStr += line
}
gis.close()
bf.close()
return outStr.toByteArray()
}