Sample code for 30+ languages & platforms
Dart Requires Chilkat v11.0.0+

Unzip Some Files by Iterating over Entries

See more Zip Examples

Demonstrates how to unzip specific files by iterating over entries in a .zip.

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final zip = CkZip();

  // Open a .zip containing:
  // 
  // a1.xml
  // b1.xml
  // c1.xml
  // dir1/a2.xml
  // dir1/c2.xml
  // dir2/dir3/c3.xml

  // We wish to unzip only a1.xml, b1.xml, and c1.xml
  try {
    zip.openZip('qa_data/zips/xml_files.zip');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  final sbFilename = CkStringBuilder();

  final entry = CkZipEntry();
  final numEntries = zip.numEntries;
  var i = 0;
  while (i < numEntries) {
    zip.entryAt(i, entry);

    final entryFilePath = entry.fileName;
    print(entryFilePath);

    if (!entry.isDirectory) {
      sbFilename.setString(entryFilePath);
      if (!sbFilename.contains('/', false)) {
        // Does not contain "/"
        // Unzip to the qa_output directory.
        try {
          entry.extract('qa_output');
          print('Unzipped $entryFilePath');
        } on ChilkatException {
          print('Failed to unzip $entryFilePath');
        }
      }
    }

    i++;
  }
}