Sample code for 30+ languages & platforms
Dart

Get FTP Directory Listing as XML

See more FTP Examples

Demonstrates how to call GetXmlDirListing and parse the results.

Chilkat Dart Downloads

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

void main() {
  // This example assumes Chilkat Ftp2 to have been previously unlocked.
  // See Unlock Ftp2 for sample code.

  final ftp = CkFtp2();

  ftp.hostname = 'www.my-ftp-server.com';
  ftp.username = 'mFtpLogin';
  ftp.password = 'myFtpPassword';

  // Connect to the FTP server.
  try {
    ftp.connectOnly();
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Authenticate with the FTP server.
  try {
    ftp.loginAfterConnectOnly();
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Retrieve (in XML format) the HOME directory of this FTP account.
  final String xmlListing;
  try {
    xmlListing = ftp.getXmlDirListing('*.*');
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  // Now load the XML and parse it..
  final xml = CkXml();
  xml.loadXml(xmlListing);
  print(xml.getXml());

  // Iterate over the XML...
  var i = 0;
  final numEntries = xml.numChildren;
  while (i < numEntries) {
    final xEntry = xml.getChild(i);
    if (xEntry.tagEquals('dir')) {
      print('Directory: ${xEntry.content}');
    } else {
      final sz = xEntry.getChildIntValue('size');
      print('File: ${xEntry.getChildContent('name')}, size: $sz');
      try {
        final xLastMod = xEntry.findChild('lastModTime');
        final month = xLastMod.getAttrValueInt('m');
        final year = xLastMod.getAttrValueInt('y');
        final day = xLastMod.getAttrValueInt('d');
        print('    YYYY-MM-DD: $year-$month-$day');
      } on ChilkatException {
        // xEntry.findChild() failed; continue anyway.
      }
    }

    i++;
  }

  ftp.disconnect();

  print('Success.');

  // Sample XML directory listing:
  // <?xml version="1.0" encoding="utf-8" ?>
  // <remoteDir>
  //     <dir>Desktop</dir>
  //     <dir>Documents</dir>
  //     <dir>Downloads</dir>
  //     <dir>Music</dir>
  //     <dir>Pictures</dir>
  //     <dir>Public</dir>
  //     <dir>Templates</dir>
  //     <dir>Videos</dir>
  //     <file>
  //         <name>c.py</name>
  //         <size>1244</size>
  //         <lastModTime full="20151009-000000" y="2015" d="9" m="10" hh="0" mm="0" ss="0" />
  //     </file>
  //     <file>
  //         <name>cacerts_linux</name>
  //         <size>177207</size>
  //         <lastModTime full="20140915-000000" y="2014" d="15" m="9" hh="0" mm="0" ss="0" />
  //     </file>
  //     <file>
  //         <name>empty.txt</name>
  //         <size>0</size>
  //         <lastModTime full="20150917-000000" y="2015" d="17" m="9" hh="0" mm="0" ss="0" />
  //     </file>
  //     <file>
  //         <name>hamlet.xml</name>
  //         <size>279658</size>
  //         <lastModTime full="20160917-084100" y="2016" d="17" m="9" hh="8" mm="41" ss="0" />
  //     </file>
  // </remoteDir>
  // 
  // 
}