rm static method
Removes the files
and returns true if the operation was successful;
otherwise false.
By default, it does not remove directories.
If directory
is set to true removes the directories if they are empty.
If force
is set to true ignores nonexistent files.
If recursive
is set to true remove the directories and their contents
recursively.
Implementation
static bool rm(List<String> files,
{bool directory = false, bool force = false, bool recursive = false}) {
if (files.isEmpty) {
return false;
}
var result = true;
for (final file in files) {
if (file.isEmpty) {
if (!force) {
result = false;
}
continue;
}
final list = glob(file);
if (list.isEmpty) {
if (!force) {
result = false;
}
continue;
}
for (final name in list) {
FileSystemEntity? entity;
var isDirectory = false;
if (testfile(name, 'link')!) {
entity = Link(name);
} else if (testfile(name, 'file')!) {
entity = File(name);
} else if (testfile(name, 'directory')!) {
entity = Directory(name);
isDirectory = true;
}
if (entity == null) {
if (!force) {
result = false;
}
} else {
if (isDirectory) {
if (recursive) {
try {
entity.deleteSync(recursive: recursive);
} catch (e) {
result = false;
}
} else if (directory) {
result = rmdir([entity.path], parents: true);
} else {
result = false;
}
} else {
try {
entity.deleteSync();
} catch (e) {
result = false;
}
}
}
}
}
return result;
}