【问题标题】:Flutter How to move fileFlutter 如何移动文件
【发布时间】:2019-07-08 14:51:39
【问题描述】:

我将移动某些文件。如何将图像文件从目录移动到另一个目录, 示例文件 img.jpg 从 /storage/emulated/0/Myfolder 到 /storage/emulated/0/Urfolder?

【问题讨论】:

    标签: image flutter dart


    【解决方案1】:
    await File('/storage/emulated/0/Myfolder').rename('/storage/emulated/0/Urfolder')
    

    如果文件在不同的文件系统上,你需要创建一个新的目标文件,读取源文件并将内容写入目标文件,然后删除源文件。

    【讨论】:

    • 如果只有某些图像文件,例如我将移动的.jpg文件@Gunter
    • 我试过这个:Future move Async image (image file) { var dir = await getExternalStorageDirectory ();等待文件('$ {dir.path} / Paska /' + '$ image')。 rename('/存储/模拟/0/上传/'+'$图片'); } 但有这样的错误:
    • E/flutter (9504): [ERROR:flutter/shell/common/shell.cc(186)] Dart 错误:未处理的异常:E/flutter (9504):FileSystemException:无法将文件重命名为'/storage/emulated/0/Terupload/File: '/storage/emulated/0/Paska/paska_of_201921560445.jpg'', path = '/storage/emulated/0/Paska/File: '/storage/emulated/0/ Paska/paska_of_201921560445.jpg''(操作系统错误:没有这样的文件或目录,errno = 2)
    • 已经成功 @Günter Zöchbauer 先生,我输入的文件变量不正确,它应该是文件的路径.. 不是文件...顺便说一句,非常感谢... await File('/storage/ emulated/0/Myfolder').rename('/storage/emulated/0/Urfolder')
    • 似乎rename 可能无法操作系统错误:跨设备链接,errno = 18 例如尝试将文件夹/storage/emulated/0/Android/data/ 下的文件移动到/data/user/0/com.my.app/cache/ 下的新路径时
    【解决方案2】:

    File.rename 仅在源文件和目标路径位于同一文件系统上时有效,否则您将获得FileSystemException操作系统错误:跨设备链接,errno = 18)。因此,仅当您确定源文件和目标路径位于同一文件系统上时,才应使用它来移动文件。

    例如,当尝试将文件夹 /storage/emulated/0/Android/data/ 下的文件移动到文件夹 /data/user/0/com 下的新路径时.my.app/cache/ 将失败 FileSystemException

    这是一个用于安全移动文件的小实用函数:

    Future<File> moveFile(File sourceFile, String newPath) async {
      try {
        // prefer using rename as it is probably faster
        return await sourceFile.rename(newPath);
      } on FileSystemException catch (e) {
        // if rename fails, copy the source file and then delete it
        final newFile = await sourceFile.copy(newPath);
        await sourceFile.delete();
        return newFile;
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-10-25
      • 2022-01-09
      • 2022-11-29
      • 1970-01-01
      • 2010-09-07
      • 2020-01-30
      • 1970-01-01
      • 2021-04-09
      相关资源
      最近更新 更多