【发布时间】:2020-04-15 19:02:13
【问题描述】:
所以我从前端收到一个 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()
}
【问题讨论】:
标签: java file csv kotlin compression