unzip static method

Future<void> unzip(
  1. String srcPath,
  2. String dstPath
)

Распаковка ZIP архива

Implementation

static Future<void> unzip(String srcPath, String dstPath) async {
  final srcFile = File(srcPath);
  if (!await srcFile.exists()) {
    throw Exception('Source file does not exist: $srcPath');
  }

  final bytes = await srcFile.readAsBytes();
  final archive = ZipDecoder().decodeBytes(bytes);

  final dstDir = Directory(dstPath);
  if (!await dstDir.exists()) {
    await dstDir.create(recursive: true);
  }

  for (final file in archive) {
    final filePath = path.join(dstPath, file.name);
    final fileDir = Directory(path.dirname(filePath));

    if (!await fileDir.exists()) {
      await fileDir.create(recursive: true);
    }

    if (file.isFile) {
      final outputFile = File(filePath);
      await outputFile.writeAsBytes(file.content as List<int>);
    }
  }
}