zipLog method
Implementation
Future<File> zipLog() async {
try {
// This Function only run if _cacheDirectoryPath is not initialize
if (_cacheDirectoryPath == null) {
await _initializeCacheDirectory(); // Call initialization if not done yet
}
final logFiles = Directory(_cacheDirectoryPath ?? '')
.listSync()
.where((file) => file is File && file.path.contains(logFilePrefix))
.toList();
if (logFiles.isEmpty) {
throw Exception("No log files found to zip.");
}
final archive = Archive();
for (var logFile in logFiles) {
final file = File(logFile.path);
final fileName = file.uri.pathSegments.last;
final fileBytes = file.readAsBytesSync();
archive.addFile(ArchiveFile(fileName, fileBytes.length, fileBytes));
}
final zipEncoder = ZipEncoder(password: zipPassword);
final zipData = zipEncoder.encode(archive);
final zipFilePath = '$_cacheDirectoryPath/logs.zip';
final zipFile = File(zipFilePath)..writeAsBytesSync(zipData);
return zipFile;
} catch (e) {
rethrow;
}
}