新增接口

新增了 目录管理 、 文件操作 等接口,将这些能力封装成文件系统。

提升存储能量

文件系统为开发者提供了更加完善的能力来支撑小游戏中复杂的文件目录结构和文件读写操作,并且每个小游戏的 本地用户文件 存储容量提升到了50M。

提供用户资源隔离机制

为保证用户之间和小游戏小程序之间的资源信息不被盗取或篡改,文件系统还提供了一套 用户资源隔离机制 ,来避免登录用户之间的文件内容会互相影响,和保护信息资源的安全。

文件类型

本地临时文件

主要由 swan.downloadFile() 等特定API执行产生,这些特定的API会返回一个临时的文件地址,该地址只能在当前游戏的生命周期内使用,在游戏销毁后该临时地址和 本地临时文件 会被清除。用户只有 可读文件权限 ,这类文件无法直接调用文件系统的API对 本地临时文件 执行写入操作,最大存储为25M 。

示例:```
swan.downloadFile({url: 'https://smartprogram.baidu.com/docs/img/logo.png',success: res => {console.log(res.tempFilePath);  // 返回本地临时文件路径 bdfile://tmp/1542099788398.png
    },fail: err => {console.log(err);}
})
```

本地用户文件

主要由文件系统API操作产生,包括:文件夹操作、文件读写操作、 本地临时文件 的存储等,通过 swan.env.USER_DATA_PATH 可以获取到这个目录的路径。用户拥有 可读可写权限 。这类文件在退出游戏后数据不会被清除,可持久化保存文件,最大存储为50M。

示例:
```
fileSystemManager.writeFileSync(`${swan.env.USER_DATA_PATH}/demo.txt`,'hello','utf8'
);
```

代码包/本地包文件:

存在代码包中的文件。用户 只可读,不可写入 。 代码包文件的访问方式是从项目根目录开始写文件路径,不需要带访问协议前缀。 如: loading/loading_barbg.png

示例:```
let data = fileSystemManager.readFileSync(`loading/loading_barbg.png`,'utf8'
);
```

  • 本地文件的文件路径结构均为: {{协议名}}://文件路径 。
  • 文件系统不支持相对路径 ./ 或 ../ 。
  • 开发者不可访问 本地临时文件 、 代码包文件 、 本地用户文件 的 父级目录或更高层目录 ,均会被拒绝。
  • 与微信不同:设计中不支持 本地缓存文件 。

生命周期:

  • 当退出当前游戏、后台运行游戏至5分钟、杀死百度app进程时,会清除当前用户游戏的 本地临时文件 。
  • 当游戏从列表中删除时,会清除当前用户被删除游戏的所有文件(包含: 代码包文件 、 本地临时文件 和 本地用户文件 )。

文件管理接口

通过 swan.getFileSystemManager() 可以获取全局唯一的文件管理器对象: fileSystemManager ,调用 fileSystemManager 对象上的方法来实现对文件的操作。

const fileSystemManager = swan.getFileSystemManager(); 复制代码

场景示例:

  1. 使用 swan.downloadFile() 和 fileSystemManager.saveFile() 方法,将下载的 本地临时文件 保存到 本地用户文件 。

    const fileSystemManager = swan.getFileSystemManager();
    swan.downloadFile({url: 'https://smartprogram.baidu.com/docs/img/logo.png',success: res => {console.log(res.tempFilePath);  // 返回本地临时文件路径// bdfile://tmp/1542099788398.png
            fileSystemManager.saveFile({tempFilePath: res.tempFilePath, // 传入本地临时文件路径success: res => {// 存储后的文件路径
                    console.log(res.savedFilePath); // bdfile://usr/1542099788398.png
                },fail: err => {console.log('接口执行失败', err.errMsg);},complete: res => {console.log('接口执行完成');}});},fail: err => {console.log(err);}
    })

    将游戏关卡数据写入到 本地用户文件 中。

    const fileSystemManager = swan.getFileSystemManager();
    fileSystemManager.writeFile({filePath: `${swan.env.USER_DATA_PATH}/gameLevel.txt`,   // 传入本地用户文件路径data: '{"level": 3}',success: res => {// 写入成功。
            console.log(res);fileSystemManager.readFile({filePath: `${swan.env.USER_DATA_PATH}/gameLevel.txt`,encoding: 'utf8',success: res => {console.log(JSON.parse(res.data));// res.data 中为 string,文件内容: {level: 3}
                },fail: res => {// res.errMsg 为失败信息。
                },complete: () => {// 接口执行完成
                }});},fail: res => {// res.errMsg 为失败信息。
            console.log(res)},complete: () => {// 接口执行完成console.log('接口执行完成')}
    });
    复制代码
    读取代码包文件。const fileSystemManager = swan.getFileSystemManager();
    fileSystemManager.readFile({filePath: 'game.json',encoding: 'utf8',success: res => {console.log(res);},fail: res => {console.log(res);},complete: () => {// 接口执行完成
        }
    });

    用户资源隔离

    在百度App登录之后,访问小游戏或小程序时,不同用户的文件会被存储到本地,以 百度账号 将文件(包含: 代码包文件 、 本地临时文件 和 本地用户文件 )隔离。每个用户下的所有小程序或者小游戏都是相互隔离的。游戏之间和用户之间,游戏资源都不会被互相访问到。这样既保证了用户的信息不会被其他账号访问到,又保证了每个小游戏小程序的数据安全性。

转载于:https://www.cnblogs.com/ysx215/p/10138871.html

智能小程序档案馆——文件系统能力相关推荐

  1. 小程序返回上一页_智能小程序档案馆手把手教你成为小程序流量头号玩家(上)...

    百度智能小程序为开发者提供了全面开放的自然搜索接入能力 为了让开发者们接入得又快又好,我们准备了详细说明给大家了解~ 首先我们了解一个问题:什么是小程序接入自然搜索? 通过接入百度搜索生态,在百度 A ...

  2. 智能小程序档案馆——如何给“包”瘦身

    上传小程序代码的时候包体积太大不知如何是好?小程序打开速度慢,流量耗费大不知如何优化?在今天的文章里,我们一起来讨论一下如何给"包"瘦身. 为什么要限制包的大小? 我们都知道小程序 ...

  3. 小程序隐藏滚动条_透视智能小程序思享会,和隐藏起来的百度“新流量故事”...

    产业互联网第一媒体. 产业家 讲故事不难,但讲好一个故事,却不仅仅是迈出第一步这么简单. 撰文|皮爷 出品|产业家 "现在我们已经有百家号的生态,小程序如果做的话,它和百家号的区别是什么?& ...

  4. 百度智能小程序击中微信软肋:流量要多更要精

    最近几个月,小程序领域可谓是消息不断.此前今日头条小程序开启内测引起一阵骚动后,9月25日,百度举办了一场智能小程序媒体沟通会,宣布智能小程序将全面开放申请,几乎所有小程序开发者们都兴奋起来,BAT小 ...

  5. 百度发布智能小程序:“开放+AI”是最大特色

    7 月 4 日,"Baidu Create 2018"百度 AI 开发者大会在北京国家会中心举办,会上,百度副总裁沈抖正式对外发布了百度智能小程序.据介绍,百度智能小程序不仅可以全 ...

  6. 百度智能小程序正式开源,开发方案详解

    13日下午,2018百度·智能小程序学院首场线下公开课在北京举行,百度官方数据显示,自今年7月份百度AI开发者大会以来,百度智能小程序月活已经过了1.5亿,值得一提的是,智能小程序已经在GitHub上 ...

  7. 常青:小程序音视频能力再升级

    LiveVideoStack采访了腾讯云音视频业务终端研发团队负责人常青,针对小程序音视频能力技术升级.场景支持.政策审核以及未来演进趋势进行了详细的探讨. 文 / 常青 策划 / LiveVideo ...

  8. 百度提前批-百度智能小程序(面经详解)

    文章目录 百度提前批-百度智能小程序(面经详解) 1.定位 2.z-index .层叠 3.作用域(scope) 4.单例模式 5.原型链 6.继承(借用构造函数,寄生组合继承,缺点是什么) 7.闭包 ...

  9. 小程序服务器api接口,百度智能小程序API 开放接口

    登录 智能小程序可以通过百度官方提供的登录能力方便地获取百度提供的用户身份标识,快速建立智能小程序内的用户体系. 流程说明 1.调用 swan.login() 获取 临时登录凭证code ,并回传到开 ...

最新文章

  1. Git安装与使用教程-本地仓库与远程仓库内容版本管理
  2. Linear and Discrete Optimization - Week 1
  3. 2022年,我该用JAX吗?GitHub 1.6万星,这个年轻的工具并不完美
  4. 手机虚拟摄像头_没键盘也能打字?三星展示最新虚拟键盘Selfie Type:是真的
  5. thinkphp验证是否登录并跳转
  6. Excel使用控件创建动态地图图表
  7. ubuntu 远程桌面及Qt安装
  8. 【spider】selenium模拟点击斗鱼示例
  9. ruby 将字符串转为数组_Ruby程序将数组打印为字符串
  10. python怎么接收udp报文_面试官:说说UDP和TCP的区别及应用场景
  11. 土地覆盖和土地利用的区别
  12. UG不用计算机名,win10系统安装UG软件后打开提示计算机名不对的解决步骤
  13. 史上首次!个人所得税退税来了!如何退?怎么操作?
  14. 基于steam的游戏销量预测 — PART 2 — 文本分析
  15. 如何使用Couchbase实现文档版本控制
  16. Java中存储金额用什么数据类型?
  17. 五分钟理解什么是面向对象
  18. A State-of-the-Art Survey on Deep Learning Theory and Architectures论文翻译分析
  19. Fluent API
  20. 飞儿卡斯单片机学习(一)

热门文章

  1. python3图片处理(笔记)
  2. JS JavaScript入门
  3. 斐波那契数列重要不等式证明
  4. 不同速度的蚂蚁跑圈相遇问题
  5. 童鞋想盗取我十几个G的“种子”,看我是用python来层层加锁!!!
  6. MySQL数据库中,在读已提交和可重复读这两个不同事务隔离级别下幻读的区别
  7. matlab xpc 环境pci板卡驱动编写,XPC环境下PCI板卡驱动
  8. ifconfig 命令详解
  9. Linux 关闭交换内存
  10. 单片机中数制与数制的转换是怎样实现的