在应用程序首次加载时尝试创建 JSON 文件时出现创建失败错误

Posted

技术标签:

【中文标题】在应用程序首次加载时尝试创建 JSON 文件时出现创建失败错误【英文标题】:Creation failed error when trying to create a JSON file as the application first loads 【发布时间】: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)

【问题讨论】:

【参考方案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/...,我似乎找不到。

以上是关于在应用程序首次加载时尝试创建 JSON 文件时出现创建失败错误的主要内容,如果未能解决你的问题,请参考以下文章

加载 Bigquery 表时出现内部错误

Python json.load JSONDecodeError:尝试加载多个 json 字典时出现额外数据错误

禁止访问!尝试运行 php 文件时出现错误 403

尝试将 csv 文件加载到雪花数据库时出现“在预期解析列时到达记录结尾”错误

在 create-react-app 创建的环境中获取本地 JSON 文件时出现 JSON 解析错误

将 CSV 文件从 S3 加载到 Snowflake 时出现 SQL 编译错误