flutter - FileSystemException:无法复制文件'(操作系统错误:是目录,errno = 21)
问题描述
我正在尝试将此路径(getDatabasesPath())中的 sqflite 数据库文件复制到外部存储,但出现此异常:
FileSystemException: Cannot copy file to '/storage/emulated/0/databaseBackup', path = '/data/user/0/com.example.project/databases/roznamcha.db' (OS Error: Is a directory, errno = 21)
我的代码:
Future<bool> _requestPermission(Permission permission) async {
if (await permission.isGranted) {
return true;
} else {
var result = await permission.request();
if (result == PermissionStatus.granted) {
return true;
}
}
return false;
}
Future<bool> createDirectory() async {
Directory directory;
try {
if (Platform.isAndroid) {
if (await _requestPermission(Permission.storage)) {
directory = await getExternalStorageDirectory();
String newPath = "";
print(directory);
List<String> paths = directory.path.split("/");
for (int x = 1; x < paths.length; x++) {
String folder = paths[x];
if (folder != "Android") {
newPath += "/" + folder;
} else {
break;
}
}
newPath = newPath + "/databaseBackup";
directory = Directory(newPath);
} else {
return false;
}
} else {
if (await _requestPermission(Permission.photos)) {
directory = await getTemporaryDirectory();
} else {
return false;
}
}
if (!await directory.exists()) {
await directory.create(recursive: true);
}
if (await directory.exists()) {
final pathdb = await getDatabasesPath();
// join database name and database path
final path = join(pathdb, 'roznamcha.db');
print('path ra print ko: $path');
File f = File(path);
var cop = await f.copy(directory.path);
print(directory.path);
print('copy file $cop');
}
} catch (e) {
print(e);
}
return false;
}
我向 AndroidManiFaes.xml 添加了 permission_handler 包和权限配置,但我仍然收到此错误。
解决方案
推荐阅读
- odoo - 杂货店的 POS/库存
- python - 字符串数据,使用 pyodbc 快速执行时右截断
- ipython - 如何在 IPython Console-Spyder 中查看结果
- sisense - 用 Blox 小部件替换 Sisense 智能标签小部件
- php - 按行号在 DOMDocument 中查找节点
- powershell - Powershell 计算超过 5000 个成员的大型 AD 组的成员
- openlayers - 为什么 WebGLPointsLayer 没有 setStyle
- python - 如何处理 Slurm 中的作业取消?
- java - .class 文件未在 Sublime Text 中创建:Java
- php - 传递给::set 的参数 1 必须是 App\date 的实例,给定字符串