dealSaveDir static method
Implementation
static Future<String> dealSaveDir(FileDownloader config) async {
String? saveDir = config.saveDir;
if (saveDir == null || saveDir.isEmpty) {
saveDir = FileDownloader.globalSaveDir;
}
if (saveDir == null || saveDir.isEmpty) {
throw Exception('OkhttpDownloadUtil.globalSaveDir is not set!!!!');
}
Directory dir = Directory(saveDir);
if (! dir.existsSync()) {
await dir.create(recursive: true);
if (!dir.existsSync()) {
throw Exception('mkdirs failed: $saveDir');
}
} else {
if (await File(saveDir).exists()) {
print('warn: saveDir is a File, will try another name: $saveDir');
dir = Directory('${dir.parent.path}/${dir.path}-dir');
await dir.create(recursive: true);
if (!dir.existsSync()) {
throw Exception('mkdirs failed: ${dir.path}');
}
} else {
List<FileSystemEntity> files = dir.listSync();
int i = 0;
while (files.length > 1000) {
i++;
dir = Directory('${dir.parent.path}/${dir.path}-$i');
if (!await dir.exists()) {
break;
} else {
if (!await dir.exists()) {
await dir.delete();
}
files = dir.listSync();
}
}
}
}
return dir.path;
}