【问题标题】:Creation failed error when trying to create a JSON file as the application first loads在应用程序首次加载时尝试创建 JSON 文件时出现创建失败错误
【发布时间】:2019-06-09 23:10:37
【问题描述】:

我正在尝试创建一个在应用程序加载时调用的方法。此方法将在应用程序文档目录中创建几个 JSON 文件。但是,当我通过 Android Studio Emulator 运行它时,我收到以下错误:

代码:

import 'dart:io';
import 'package:path_provider/path_provider.dart';

createFile() async {
  //Get device document directory path
  final directory = await getApplicationDocumentsDirectory();

  //Create savedSettings.json File
  if (File('$directory/savedSettings.json').existsSync()) {
    print("This file already exists");
  } else {
    File('$directory/savedSettingsTest.json').create(recursive: true);
  }
}

错误:

Dart 错误:未处理的异常:FileSystemException:创建失败,路径 = '目录:''(操作系统错误:只读文件系统,errno = 30)

【问题讨论】:

    标签: android dart android-emulator flutter


    【解决方案1】:

    您需要先申请权限。

    你可以使用这个包:https://pub.dartlang.org/packages/simple_permissions

    这是您必须在AndroidManifest.xml 文件中添加的权限。

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

    这是你必须使用的枚举

    WriteExternalStorage
    

    这里有示例代码:

     https://pub.dartlang.org/packages/simple_permissions#-example-tab-
    

    不要忘记提取Directory的路径:

     final directory = await getApplicationDocumentsDirectory();
     final String path = directory.path;
     File("$path/savedSettings.json")
    

    【讨论】:

    • 谢谢,我会看看这个。如果我想从我的应用程序创建的文件中读取值,我需要ReadExternalStorage
    • 是的,您需要在清单中添加此权限:android.permission.READ_EXTERNAL_STORAGE
    • 我仍然遇到同样的错误。当我为读写打印getPermissionStatus 时,我在控制台中得到以下信息:PermissionStatus.authorized
    • 谢谢你,成功了。我还有一个快速的问题。如果我使用的是模拟器,我在哪里可以找到我刚刚在我的电脑上创建的文件。当我打印path 时,我得到了/data/...,我似乎找不到。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-15
    • 2022-11-21
    相关资源
    最近更新 更多