rmdir static method
Removes empty directories. Returns true if the operation was successful; otherwise false.
Implementation
static bool rmdir(List<String> names, {bool parents = false}) {
late bool Function(String) canDelete;
canDelete = (String name) {
final directory = Directory(name);
for (final entry in directory.listSync()) {
if (entry is File) {
return false;
} else if (entry is Link) {
return false;
} else if (entry is Directory) {
if (!canDelete(entry.path)) {
return false;
}
} else {
return false;
}
}
return true;
};
if (names.isEmpty) {
return false;
}
var result = true;
for (var name in names) {
name = name.toString();
if (name.isEmpty) {
result = false;
continue;
}
final list = glob(name);
if (list.isEmpty) {
result = false;
continue;
}
for (final name in list) {
if (testfile(name, 'file')!) {
result = false;
continue;
} else if (testfile(name, 'link')!) {
result = false;
continue;
} else if (!testfile(name, 'directory')!) {
result = false;
continue;
}
if (dirempty(name)) {
try {
Directory(name).deleteSync();
} catch (e) {
result = false;
}
} else {
if (parents) {
if (!canDelete(name)) {
result = false;
} else {
try {
Directory(name).deleteSync(recursive: true);
} catch (e) {
result = false;
}
}
} else {
result = false;
}
}
}
}
return result;
}