Blog
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)

HiuZing

🍑
首页
文档
收藏
关于
  • 在线转换时间戳 (opens new window)
  • 在线压缩图片 (opens new window)
  • Float-Double转二进制 (opens new window)
  • 文件转Hex字符串 (opens new window)
  • 前端面试题

  • JavaScript

  • Vue2

  • port

  • CSS

  • Node.js

  • JavaScript优化

  • uniapp

  • Mini Program

  • TypeScript

  • 面向对象编程

  • UI组件

  • Plugin

  • Vue3

  • 性能优化

  • Axios

  • 状态管理

  • React

  • Mock

  • Icon

  • Template

  • 构建工具

  • 项目规范配置

  • Taro

  • SVG

  • React Native

    • 沙盒环境-Expo

    • 原生环境

      • 案例

        • React Native蓝牙
        • React Native文件系统
          • 写入数据
          • 读取数据
          • 权限报错
            • 解决方法
        • React Native扫描二维码
        • React Native国际化
        • React Native使用antd库报警告
        • React Native 自定义字体
        • React Native 响应式布局
        • React Native 使用SVG
      • 文档

    • React Native第三方库
  • 前端
  • React Native
  • 原生环境
  • 案例
HiuZing
2023-09-15
目录

React Native文件系统

采用:https://github.com/itinance/react-native-fs#usage-android

# 写入数据

  1. 字符串

    function writeFile(data: any) {
        RNFS.writeFile(path, 'Lorem ipsum dolor sit amet', 'utf8')
          .then((success) => {
            console.log('FILE WRITTEN!');
          })
          .catch((err) => {
            console.log(err.message);
          });
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
  2. 二进制数据

    function writeFile(data: any) {
      var base64Data = base64.encode(String.fromCharCode.apply(null, data))
      RNFS.writeFile(path, base64Data, "base64")
        .then((success) => {
          console.log("FILE WRITTEN" + " " + path);
          alert("文件已成功写入");
          readFile();
        })
        .catch((err) => {
          console.log(err.message);
        });
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12

# 读取数据

async function readFile() {
  const content = await RNFS.readFile(path, "base64");
  console.log("文件内容: " + content);
}
1
2
3
4

# 权限报错

ENOENT: open failed: EACCES (Permission denied), open '/storage/emulated/0/Download/xxx.txt'

# 解决方法

ENOENT: open failed: EACCES (Permission denied), open '/storage/emulated/0/Download/ · Issue #941 · itinance/react-native-fs (github.com) (opens new window)

  1. 在AndroidManifest.xml

    ....
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> // worked without this also
    ...
    <application ...
    android:requestLegacyExternalStorage="true" // this is needed
    ....
    >
    
    1
    2
    3
    4
    5
    6
    7
  2. 征求许可

    在这里,我们使用react-native-permissions

      requestMultiple([PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE, PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE]).then((statuses) => {
        console.log("BLUETOOTH_SCAN", statuses[PERMISSIONS.ANDROID.BLUETOOTH_SCAN]);
        console.log("BLUETOOTH_CONNECT", statuses[PERMISSIONS.ANDROID.BLUETOOTH_CONNECT]);
        // console.log('WRITE_EXTERNAL_STORAGE', statuses[PERMISSIONS.ANDROID.WRITE_EXTERNAL_STORAGE]);
        // console.log('READ_EXTERNAL_STORAGE', statuses[PERMISSIONS.ANDROID.READ_EXTERNAL_STORAGE]);
      });
    
    1
    2
    3
    4
    5
    6
上次更新: 2024/08/14, 04:14:33
React Native蓝牙
React Native扫描二维码

← React Native蓝牙 React Native扫描二维码→

最近更新
01
React Native 使用SVG
08-13
02
Docker基础命令
08-04
03
算数逻辑单元
07-30
更多文章>
Theme by Vdoing | Copyright © 2021-2024 WeiXiaojing | 友情链接
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式