微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何解决颤振中的“操作系统错误:文件存在,errno = 17”?

如何解决如何解决颤振中的“操作系统错误:文件存在,errno = 17”?

我正在尝试将文件下载并保存在 Downlaod 目录中,但每次出现此错误时:

I/Flutter (21400): filesystemexception: Cannot create file,path = '/storage/emulated/0/Download/contratto.jpg' (OS Error: File exists,errno = 17)

但是如果我在我的存储中搜索这个文件,我没有找到它,我不明白。

在清单中我拥有所有权限:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

我正在使用 ext_storage 包来查找路径,但即使使用 path_provider 我也遇到了同样的错误。 这是我的代码

static Future download(String url,String fileName,String extension) async {
    _checkPermission();
    String _localPath = await ExtStorage.getExternalStoragePublicDirectory(
        ExtStorage.DIRECTORY_DOWNLOADS);
    dio dio = dio();
    await dio.download(
      url,_localPath + "/" + fileName + "." + extension,);
}

我使用的是 Flutter 2.0.6。 有什么想法吗?

编辑: 下载仅在我第一次保存具有特定名称文件时有效,如果我删除它并尝试再次下载它,我会收到此错误。我也尝试过重新安装该应用程序,但仍然出现错误

解决方法

显然,Android 删除文件的方式似乎有问题:第一次它可以工作,但下次错误比较,即使我手动删除文件。

我的解决方案:在文件名后附加一个随机字符串。我知道它不是那么优雅,但它确实有效。

 String filePath =
        _localPath + "/" + fileName + Uuid().v4() + "." + extension;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。