@@ -28,6 +28,7 @@ import android.os.IBinder
28
28
import androidx.core.app.NotificationCompat
29
29
import androidx.localbroadcastmanager.content.LocalBroadcastManager
30
30
import androidx.preference.PreferenceManager
31
+ import com.github.luben.zstd.ZstdOutputStream
31
32
import com.wirelessalien.zipxtract.R
32
33
import com.wirelessalien.zipxtract.constant.BroadcastConstants.ACTION_ARCHIVE_COMPLETE
33
34
import com.wirelessalien.zipxtract.constant.BroadcastConstants.ACTION_ARCHIVE_ERROR
@@ -54,7 +55,6 @@ import org.apache.commons.compress.compressors.bzip2.BZip2CompressorOutputStream
54
55
import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream
55
56
import org.apache.commons.compress.compressors.lzma.LZMACompressorOutputStream
56
57
import org.apache.commons.compress.compressors.xz.XZCompressorOutputStream
57
- import org.apache.commons.compress.compressors.zstandard.ZstdCompressorOutputStream
58
58
import java.io.BufferedOutputStream
59
59
import java.io.File
60
60
import java.io.IOException
@@ -132,9 +132,15 @@ class ArchiveTarService : Service() {
132
132
stopForegroundService()
133
133
return
134
134
}
135
+
136
+ // Get ZSTD compression level from SharedPreferences
137
+ val sharedPreferences = PreferenceManager .getDefaultSharedPreferences(this )
138
+ val compressionLevelString = sharedPreferences.getString(" zstd_compression_level" , " 3" )
139
+ val compressionLevel = compressionLevelString?.toIntOrNull() ? : 3
140
+ val safeLevel = compressionLevel.coerceIn(0 , 22 )
141
+
135
142
try {
136
143
val baseDirectory = File (filesToArchive.first()).parentFile?.absolutePath ? : " "
137
- val sharedPreferences = PreferenceManager .getDefaultSharedPreferences(this )
138
144
val archivePath = sharedPreferences.getString(PREFERENCE_ARCHIVE_DIR_PATH , null )
139
145
val parentDir: File
140
146
@@ -192,7 +198,7 @@ class ArchiveTarService : Service() {
192
198
CompressorStreamFactory .LZMA -> LZMACompressorOutputStream (bos)
193
199
CompressorStreamFactory .BZIP2 -> BZip2CompressorOutputStream (bos)
194
200
CompressorStreamFactory .XZ -> XZCompressorOutputStream (bos)
195
- CompressorStreamFactory .ZSTANDARD -> ZstdCompressorOutputStream (bos)
201
+ CompressorStreamFactory .ZSTANDARD -> ZstdOutputStream (bos). apply { setLevel(safeLevel) }
196
202
CompressorStreamFactory .GZIP -> GzipCompressorOutputStream (bos)
197
203
else -> bos
198
204
}
0 commit comments