printDirectoryTree method
Prints the directory tree starting from the specified directory.
Builds a tree representation of the directory structure and prints it to the console, followed by summary information.
directory
The directory to start from.
prefix
Prefix string to use for indentation (default: empty string).
Implementation
Future<void> printDirectoryTree(
Directory directory, {
String prefix = '',
}) async {
try {
final rootNode = await _buildFileTree(directory, currentLevel: 0);
_sortNodes(rootNode.children);
final totalFiles = _countFiles(rootNode);
final totalDirs = _countDirs(rootNode);
final totalSize = rootNode.size;
_printTree(rootNode, prefix: '');
print('\n${ConsoleColors.bold}Summary:${ConsoleColors.reset}');
print(
'${ConsoleColors.info('Total files:')} ${ConsoleColors.success(totalFiles.toString())}',
);
print(
'${ConsoleColors.info('Total directories:')} ${ConsoleColors.success(totalDirs.toString())}',
);
if (showSizes) {
print(
'${ConsoleColors.info('Total size:')} ${ConsoleColors.success(_formatSize(totalSize))}',
);
}
} catch (e) {
print(ConsoleColors.error('Error processing directory tree: $e'));
}
}