Better compression - decompression implementation

This commit is contained in:
J-Jamet
2020-08-26 11:43:35 +02:00
parent e7159c9d36
commit acb3657d95

View File

@@ -86,26 +86,22 @@ class BinaryAttachment : Parcelable {
// To compress, create a new binary with file // To compress, create a new binary with file
if (isCompressed != true) { if (isCompressed != true) {
val fileBinaryCompress = File(concreteDataFile.parent, concreteDataFile.name + "_temp") val fileBinaryCompress = File(concreteDataFile.parent, concreteDataFile.name + "_temp")
var outputStream: GZIPOutputStream? = null GZIPOutputStream(FileOutputStream(fileBinaryCompress)).use { outputStream ->
var inputStream: InputStream? = null getInputDataStream().use { inputStream ->
try { inputStream.readBytes(bufferSize) { buffer ->
outputStream = GZIPOutputStream(FileOutputStream(fileBinaryCompress)) outputStream.write(buffer)
inputStream = getInputDataStream()
inputStream.readBytes(bufferSize) { buffer ->
outputStream.write(buffer)
}
} finally {
inputStream?.close()
outputStream?.close()
// Remove unGzip file
if (concreteDataFile.delete()) {
if (fileBinaryCompress.renameTo(concreteDataFile)) {
// Harmonize with database compression
isCompressed = true
} }
} }
} }
// Remove unGzip file
if (concreteDataFile.delete()) {
if (fileBinaryCompress.renameTo(concreteDataFile)) {
// Harmonize with database compression
isCompressed = true
}
}
} else {
isCompressed = true
} }
} }
} }
@@ -115,26 +111,22 @@ class BinaryAttachment : Parcelable {
dataFile?.let { concreteDataFile -> dataFile?.let { concreteDataFile ->
if (isCompressed != false) { if (isCompressed != false) {
val fileBinaryDecompress = File(concreteDataFile.parent, concreteDataFile.name + "_temp") val fileBinaryDecompress = File(concreteDataFile.parent, concreteDataFile.name + "_temp")
var outputStream: FileOutputStream? = null FileOutputStream(fileBinaryDecompress).use { outputStream ->
var inputStream: GZIPInputStream? = null GZIPInputStream(getInputDataStream()).use { inputStream ->
try { inputStream.readBytes(bufferSize) { buffer ->
outputStream = FileOutputStream(fileBinaryDecompress) outputStream.write(buffer)
inputStream = GZIPInputStream(getInputDataStream())
inputStream.readBytes(bufferSize) { buffer ->
outputStream.write(buffer)
}
} finally {
inputStream?.close()
outputStream?.close()
// Remove gzip file
if (concreteDataFile.delete()) {
if (fileBinaryDecompress.renameTo(concreteDataFile)) {
// Harmonize with database compression
isCompressed = false
} }
} }
} }
// Remove gzip file
if (concreteDataFile.delete()) {
if (fileBinaryDecompress.renameTo(concreteDataFile)) {
// Harmonize with database compression
isCompressed = false
}
}
} else {
isCompressed = false
} }
} }
} }