listDirectoryNames method
NLST: list only filenames, one per line (RFC 959).
Implementation
Future<void> listDirectoryNames(String path) async {
if (!checkDataProtection()) return;
if (!await openDataConnection()) {
return;
}
try {
transferInProgress = true;
var dirContents = await fileOperations.listDirectory(path);
for (FileSystemEntity entity in dirContents) {
if (!transferInProgress || dataSocket == null) break;
try {
String fileName = entity.path.split(Platform.pathSeparator).last;
dataSocket!.write('$fileName\r\n');
} catch (e) {
logger.generalLog('Socket write error during NLST: $e');
transferInProgress = false;
break;
}
}
if (transferInProgress) {
transferInProgress = false;
await _closeDataSocket();
sendResponse('226 Transfer complete');
} else {
await _closeDataSocket();
sendResponse('426 Transfer aborted');
}
} catch (e) {
logger.generalLog('Error listing directory names: $e');
sendResponse('550 Failed to list directory');
transferInProgress = false;
await _closeDataSocket();
}
}