FileSystemException: 无法复制文件 '(操作系统错误:是一个目录,errno = 21)

时间:2021-07-10 16:44:13

标签: flutter dart

我正在尝试将 sqflite 数据库文件从此路径 (getDatabasesPath()) 复制到外部存储,但出现此异常:

 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 包和权限配置,但我仍然收到此错误。

0 个答案:

没有答案
相关问题