为了安全管理应用的资源目录,规范对文件系统的操作,5+ API在系统应用目录的基础设计了应用沙盒目录, 分为私有目录和公共目录两种类型,私有目录仅应用自身可以访问,公共目录在多应用环境时(如小程序SDK)所有应用都可访问。
- 应用私有资源目录,对应常量plus.io.PRIVATE_WWW,仅应用自身可读
- 应用私有文档目录,对应常量plus.io.PRIVATE_DOC,仅应用自身可读写
- 应用公共文档目录,对应常量plus.io.PUBLIC_DOCUMENTS,多应用时都可读写,常用于保存应用间共享文件
- 应用公共下载目录,对应常量plus.io.PUBLIC_DOWNLOADS,多应用时都可读写,常用于保存下载文件
调用5+ API时通常需要传入文件路径,为了方便理解,分为以下类型:
- 相对路径URL,对应类型plus.io.RelativeURL,以“_”开头,用于访问5+ API定义的应用沙盒目录
- 本地绝对路径URL,对应类型plus.io.LocalURL,以“file://”开头,后面跟随系统的绝对路径,用于访问应用沙盒外的目录,如系统相册等
- 网络路径URL,对应类型plus.io.RemoteURL,以“http://”或“https://”开头,用于访问网络资源
常量:
- PRIVATE_WWW: 应用私有资源目录常量
- PRIVATE_DOC: 应用私有文档目录常量
- PUBLIC_DOCUMENTS: 应用公共文档目录常量
- PUBLIC_DOWNLOADS: 应用公共下载目录常量
方法:
- requestFileSystem: 请求本地文件系统对象
- resolveLocalFileSystemURL: 通过URL参数获取目录对象或文件对象
- convertLocalFileSystemURL: 将本地URL路径转换成平台绝对路径
- convertAbsoluteFileSystem: 将平台绝对路径转换成本地URL路径
- getAudioInfo: 获取音频文件信息
- getFileInfo: 获取文件信息
- getImageInfo: 获取图片信息
- getVideoInfo: 获取视频文件信息
对象:
- DirectoryEntry: 文件系统中的目录对象,用于管理特定的本地目录
- DirectoryReader: 读取目录信息对象,用于获取目录中包含的文件及子目录
- File: 文件系统中的文件数据对象,用于获取文件的数据
- FileEntry: 文件系统中的文件对象,用于管理特定的本地文件
- FileReader: 文件系统中的读取文件对象,用于获取文件的内容
- FileWriter: 文件系统中的写文件对象,用于写入文件内容
- FileSystem: 文件系统对象,用于管理特定本地文件目录
- Flags: JSON对象,获取文件操作的参数
- Metadata: JSON对象,保存文件或目录的状态信息对象
- FileEvent: 文件或目录操作事件对象
- RelativeURL: 相对路径URL
- LocalURL: 本地绝对路径URL
- RemoteURL: 网络路径URL
- AudioInfo: JSON对象,音频文件信息对象
- FileInfo: JSON对象,文件信息对象
- ImageInfo: JSON对象,图片信息对象
- VideoInfo: JSON对象,视频文件信息对象
回调方法:
- FileEventCallback: 文件事件回调
- FileSystemSuccessCallback: 请求文件系统成功的回调函数
- FileResolveSuccessCallback: 通过URL参数获取目录或文件对象成功的回调函数
- MetadataSuccessCallback: 获取文件或目录状态信息成功的回调函数
- EntrySuccessCallback: 操作文件或目录对象成功的回调函数
- EntrysSuccessCallback: 操作文件或目录对象数组成功的回调函数
- FileWriterSuccessCallback: 写文件操作成功的回调函数
- FileSuccessCallback: 文件操作成功的回调函数
- FileErrorCallback: 文件操作失败的回调函数
- IOSuccessCallback: 成功回调函数
- IOFailCallback: 失败回调函数
- IOCompleteCallback: 操作完成回调函数
权限:
5+功能模块(permissions)
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// ...</span>
<span style="color:#ffa0a0">"permissions"</span><span style="color:#ffffff">:{</span>
<span style="color:#87ceeb">// ...</span>
<span style="color:#ffa0a0">"File"</span><span style="color:#ffffff">:</span> <span style="color:#ffffff">{</span>
<span style="color:#ffa0a0">"description"</span><span style="color:#ffffff">:</span> <span style="color:#ffa0a0">"文件系统"</span>
<span style="color:#ffffff">}</span>
<span style="color:#ffffff">}</span>
<span style="color:#ffffff">}</span>
</code></span></span>
PRIVATE_WWW
应用私有资源目录常量
<span style="background-color:#333333"><span style="color:#474747"><code><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PRIVATE_WWW</span><span style="color:#ffffff">;</span>
</code></span></span>
说明:
Number 类型
本地文件系统常量,Number类型,固定值1,对应相对路径URL为"_www"开头的地址。 应用所有资源保存到此目录,仅本应用可访问。 为了确保应用资源的安全性,通常此目录只可读。
注意: 需要将应用设置为释放资源模式才能访问此目录,配置方法:
- uni-app项目,在manifest.json的"app-plus"节点下添加"runmode":"liberate"
- 5+ App项目,在manifest.json的"plus"节点下添加"runmode":"liberate"
提交云端打包生效,详见manifest.json的runmode配置
平台支持
- Android - ALL (支持) :
应用资源默认在apk的assets目录中,安装到设备后无法通过5+ API操作。 为了能够正常枚举访问此目录,需要将应用设置为释放资源模式(在manifest.json中将runmode值设置为liberate), 这样程序在第一次运行时将资源释放到应用Android系统应用内部存储目录(通常为“/storage/emulated/0/Android/data/%PACKAGENAME%/”,其中%PACKAGENAME%是程序的包名)下的 “apps%APPID%/www”,其中%APPID%是应用的标识。
- iOS - ALL (支持) :
应用资源默认在应用沙盒目录下的“/DCloud_Pandora.app/Pandora/apps/%APPID%/www”中, 如将应用设置为释放资源模式(在manifest.json中将runmode值设置为liberate),程序在第一次运行时将资源释放到iOS系统应用沙盒目录下的“/Library/Pandora/apps/%APPID%/www”, 其中%APPID%是应用的标识。
示例:
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span>
<span style="color:#f0e68c"><strong><head></strong></span>
<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">File Example</span><span style="color:#f0e68c"><strong></title></strong></span>
<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#87ceeb">// 扩展API加载完毕后调用onPlusReady回调函数 </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestFileSystem</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PRIVATE_WWW</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff"> fs </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// 可通过fs操作PRIVATE_WWW文件系统 </span>
<span style="color:#87ceeb">// ......</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#ffffff">(</span><span style="color:#ffffff"> e </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"Request file system failed: "</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message </span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
<span style="color:#f0e68c"><strong></script></strong></span>
<span style="color:#f0e68c"><strong></head></strong></span>
<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
Local file system
</span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span>
</code></span></span>
PRIVATE_DOC
应用私有文档目录常量
<span style="background-color:#333333"><span style="color:#474747"><code><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PRIVATE_DOC</span><span style="color:#ffffff">;</span>
</code></span></span>
说明:
Number 类型
本地文件系统常量,Number类型,固定值2,对应相对路径URL为"_doc"开头的地址。 应用私有文档目录,仅本应用可读写。
平台支持
- Android - ALL (支持) :
对应Android系统应用内部存储目录(通常为“/storage/emulated/0/Android/data/%PACKAGENAME%/”,其中%PACKAGENAME%是程序的包名)下的 “apps%APPID%/doc”,其中%APPID%是应用的标识。
- iOS - ALL (支持) :
对应iOS系统应用沙盒目录下的“/Library/Pandora/apps/%APPID%/doc”,其中%APPID%是应用的标识。
示例:
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span>
<span style="color:#f0e68c"><strong><head></strong></span>
<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">File Example</span><span style="color:#f0e68c"><strong></title></strong></span>
<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#87ceeb">// 扩展API加载完毕后调用onPlusReady回调函数 </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestFileSystem</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PRIVATE_DOC</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff"> fs </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// 可通过fs操作PRIVATE_DOC文件系统 </span>
<span style="color:#87ceeb">// ......</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#ffffff">(</span><span style="color:#ffffff"> e </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"Request file system failed: "</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message </span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
<span style="color:#f0e68c"><strong></script></strong></span>
<span style="color:#f0e68c"><strong></head></strong></span>
<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
Local file system
</span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span>
</code></span></span>
PUBLIC_DOCUMENTS
应用公共文档目录常量
<span style="background-color:#333333"><span style="color:#474747"><code><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PUBLIC_DOCUMENTS</span><span style="color:#ffffff">;</span>
</code></span></span>
说明:
Number 类型
本地文件系统常量,Number类型,固定值3,对应相对路径URL为"_documents"开头的地址。 安装包存在多个5+ App或uni-app环境时(如小程序SDK),所有5+ App或uni-app都可进行读写操作。
平台支持
- Android - ALL (支持) :
对应Android系统应用外部存储目录(通常为“/sdcard/Android/data/%PACKAGENAME%/”,其中%PACKAGENAME%是程序的包名)下的"documents"目录, 如HBuilder基座对应目录为“/sdcard/Android/data/io.dcloud.HBuilder/documents”。
- iOS - ALL (支持) :
对应iOS系统应用沙盒目录下的“/Library/Pandora/documents”。
示例:
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span>
<span style="color:#f0e68c"><strong><head></strong></span>
<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">File Example</span><span style="color:#f0e68c"><strong></title></strong></span>
<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#87ceeb">// 扩展API加载完毕后调用onPlusReady回调函数 </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestFileSystem</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PUBLIC_DOCUMENTS</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff"> fs </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// 可通过fs操作PUBLIC_DOCUMENTS文件系统 </span>
<span style="color:#87ceeb">// ......</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#ffffff">(</span><span style="color:#ffffff"> e </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"Request file system failed: "</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message </span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
<span style="color:#f0e68c"><strong></script></strong></span>
<span style="color:#f0e68c"><strong></head></strong></span>
<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
Local file system
</span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span>
</code></span></span>
PUBLIC_DOWNLOADS
应用公共下载目录常量
<span style="background-color:#333333"><span style="color:#474747"><code><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PUBLIC_DOWNLOADS</span><span style="color:#ffffff">;</span>
</code></span></span>
说明:
Number 类型
本地文件系统常量,Number类型,固定值4,对应相对路径URL为"_downloads"开头的地址。 安装包存在多个5+ App或uni-app环境时(如小程序SDK),所有5+ App或uni-app都可进行读写操作。
平台支持
- Android - ALL (支持) :
对应Android系统应用外部存储目录(通常为“/sdcard/Android/data/%PACKAGENAME%/”,其中%PACKAGENAME%是程序的包名)下的"downloads"目录, 如HBuilder基座对应目录为“/sdcard/Android/data/io.dcloud.HBuilder/downloads”。
- iOS - ALL (支持) :
对应iOS系统应用沙盒目录下的“/Library/Pandora/downloads”。
示例:
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span>
<span style="color:#f0e68c"><strong><head></strong></span>
<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">File Example</span><span style="color:#f0e68c"><strong></title></strong></span>
<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#87ceeb">// 扩展API加载完毕后调用onPlusReady回调函数 </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestFileSystem</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PUBLIC_DOWNLOADS</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff"> fs </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// 可通过fs操作PUBLIC_DOWNLOADS文件系统 </span>
<span style="color:#87ceeb">// ......</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#ffffff">(</span><span style="color:#ffffff"> e </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"Request file system failed: "</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message </span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
<span style="color:#f0e68c"><strong></script></strong></span>
<span style="color:#f0e68c"><strong></head></strong></span>
<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
Local file system
</span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span>
</code></span></span>
requestFileSystem
请求本地文件系统对象
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestFileSystem</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> type</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> succesCB</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> errorCB </span><span style="color:#ffffff">);</span>
</code></span></span>
说明:
获取指定的文件系统,可通过type指定获取文件系统的类型。 获取指定的文件系统对象成功通过succesCB回调返回,失败则通过errorCB返回。
参数:
- type: ( Number ) 必选 本地文件系统常量
可取plus.io下的常量,如plus.io.PRIVATE_DOC、plus.io.PUBLIC_DOCUMENTS等。
- succesCB: ( FileSystemSuccessCallback ) 必选 请求文件系统成功的回调
- errorCB: ( FileErrorCallback ) 可选 请求文件系统失败的回调
返回值:
void : 无
示例:
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span>
<span style="color:#f0e68c"><strong><head></strong></span>
<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">File Example</span><span style="color:#f0e68c"><strong></title></strong></span>
<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#87ceeb">// 扩展API加载完毕后调用onPlusReady回调函数 </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">requestFileSystem</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">PRIVATE_WWW</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff"> fs </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// 可通过fs进行文件操作 </span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"Request file system success!"</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#ffffff">(</span><span style="color:#ffffff"> e </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"Request file system failed: "</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message </span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
<span style="color:#f0e68c"><strong></script></strong></span>
<span style="color:#f0e68c"><strong></head></strong></span>
<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
Request file system
</span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span>
</code></span></span>
resolveLocalFileSystemURL
通过URL参数获取目录对象或文件对象
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#f0e68c"><strong>void</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">resolveLocalFileSystemURL</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> url</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> succesCB</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> errorCB </span><span style="color:#ffffff">);</span>
</code></span></span>
说明:
快速获取指定的目录或文件操作对象,如通过URL值“_www/test.html”可直接获取文件操作对象。 url值可支持相对路径URL、本地路径URL。 获取指定的文件或目录操作对象成功通过succesCB回调返回,如果指定URL路径或文件不存在则失败通过errorCB回调返回。
参数:
- url : ( String ) 必选 要操作文件或目录的URL地址
- succesCB: ( FileResolveSuccessCallback ) 必选 获取操作文件或目录对象成功的回调函数
- errorCB: ( FileErrorCallback ) 可选 获取操作文件或目录对象失败的回调函数
返回值:
void : 无
示例:
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span>
<span style="color:#f0e68c"><strong><head></strong></span>
<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">File Example</span><span style="color:#f0e68c"><strong></title></strong></span>
<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#87ceeb">// 扩展API加载完毕后调用onPlusReady回调函数 </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">()</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">resolveLocalFileSystemURL</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"_www/test.html"</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff"> entry </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span>
<span style="color:#87ceeb">// 可通过entry对象操作test.html文件 </span><span style="color:#ffffff">
entry</span><span style="color:#ffffff">.</span><span style="color:#ffffff">file</span><span style="color:#ffffff">(</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">file</span><span style="color:#ffffff">){</span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> fileReader </span><span style="color:#ffffff">=</span> <span style="color:#f0e68c"><strong>new</strong></span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#98fb98">FileReader</span><span style="color:#ffffff">();</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"getFile:"</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> JSON</span><span style="color:#ffffff">.</span><span style="color:#ffffff">stringify</span><span style="color:#ffffff">(</span><span style="color:#ffffff">file</span><span style="color:#ffffff">));</span><span style="color:#ffffff">
fileReader</span><span style="color:#ffffff">.</span><span style="color:#ffffff">readAsText</span><span style="color:#ffffff">(</span><span style="color:#ffffff">file</span><span style="color:#ffffff">,</span> <span style="color:#ffa0a0">'utf-8'</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
fileReader</span><span style="color:#ffffff">.</span><span style="color:#ffffff">onloadend </span><span style="color:#ffffff">=</span> <span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff">(</span><span style="color:#ffffff">evt</span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"11"</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> evt</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span><span style="color:#ffa0a0">"evt.target"</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> evt</span><span style="color:#ffffff">.</span><span style="color:#ffffff">target</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span><span style="color:#ffffff">evt</span><span style="color:#ffffff">.</span><span style="color:#ffffff">target</span><span style="color:#ffffff">.</span><span style="color:#ffffff">result</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span><span style="color:#ffffff">file</span><span style="color:#ffffff">.</span><span style="color:#ffffff">size </span><span style="color:#ffffff">+</span> <span style="color:#ffa0a0">'--'</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> file</span><span style="color:#ffffff">.</span><span style="color:#ffffff">name</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">},</span> <span style="color:#f0e68c"><strong>function</strong></span> <span style="color:#ffffff">(</span><span style="color:#ffffff"> e </span><span style="color:#ffffff">)</span> <span style="color:#ffffff">{</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"Resolve file URL failed: "</span> <span style="color:#ffffff">+</span><span style="color:#ffffff"> e</span><span style="color:#ffffff">.</span><span style="color:#ffffff">message </span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span> <span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
<span style="color:#f0e68c"><strong></script></strong></span>
<span style="color:#f0e68c"><strong></head></strong></span>
<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
Request file system
</span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span>
</code></span></span>
convertLocalFileSystemURL
将本地URL路径转换成平台绝对路径
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">String</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">convertLocalFileSystemURL</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> url </span><span style="color:#ffffff">);</span>
</code></span></span>
说明:
绝对路径符合各平台文件路径格式,通常用于Native.JS调用系统原生文件操作API,也可以在前面添加“file://”后在html页面中直接使用。
参数:
- url: ( String ) 必选 要转换的文件或目录URL地址
URL地址必须是合法的路径,如果地址不合法则返回null。
返回值:
String : 转换后在平台路径,在不同平台或者不同设备返回的值可能存在差异,如输入url为“_doc/a.png”: Android平台转换后的路径为“/storage/sdcard0/Android/data/io.dcloud.HBuilder/.HBuilder/apps/HBuilder/doc/a.png”; 在iOS平台转换后的路径为“/var/mobile/Containers/Data/Application/757966CF-345C-4348-B07F-EEF83CF9A369/Library/Pandora/apps/HBuilder/doc/a.png”。
示例:
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#cccccc"><!DOCTYPE html></span>
<span style="color:#f0e68c"><strong><html></strong></span>
<span style="color:#f0e68c"><strong><head></strong></span>
<span style="color:#f0e68c"><strong><meta</strong></span> <span style="color:#bdb76b"><strong>charset</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"utf-8"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#f0e68c"><strong><title></strong></span><span style="color:#ffffff">File Example</span><span style="color:#f0e68c"><strong></title></strong></span>
<span style="color:#f0e68c"><strong><script</strong></span> <span style="color:#bdb76b"><strong>type</strong></span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"text/javascript"</span><span style="color:#f0e68c"><strong>></strong></span>
<span style="color:#87ceeb">// 扩展API加载完毕后调用onPlusReady回调函数 </span><span style="color:#ffffff">
document</span><span style="color:#ffffff">.</span><span style="color:#ffffff">addEventListener</span><span style="color:#ffffff">(</span> <span style="color:#ffa0a0">"plusready"</span><span style="color:#ffffff">,</span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">,</span> <span style="color:#f0e68c"><strong>false</strong></span> <span style="color:#ffffff">);</span>
<span style="color:#87ceeb">// 扩展API加载完毕,现在可以正常调用扩展API</span>
<span style="color:#f0e68c"><strong>function</strong></span><span style="color:#ffffff"> onPlusReady</span><span style="color:#ffffff">(){</span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> url</span><span style="color:#ffffff">=</span><span style="color:#ffa0a0">"_www/index.html"</span><span style="color:#ffffff">;</span>
<span style="color:#f0e68c"><strong>var</strong></span><span style="color:#ffffff"> path</span><span style="color:#ffffff">=</span><span style="color:#ffffff">plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">convertLocalFileSystemURL</span><span style="color:#ffffff">(</span><span style="color:#ffffff">url</span><span style="color:#ffffff">);</span><span style="color:#ffffff">
alert</span><span style="color:#ffffff">(</span><span style="color:#ffffff">path</span><span style="color:#ffffff">);</span>
<span style="color:#ffffff">}</span>
<span style="color:#f0e68c"><strong></script></strong></span>
<span style="color:#f0e68c"><strong></head></strong></span>
<span style="color:#f0e68c"><strong><body></strong></span><span style="color:#ffffff">
convertLocalFileSystemURL
</span><span style="color:#f0e68c"><strong></body></strong></span>
<span style="color:#f0e68c"><strong></html></strong></span>
</code></span></span>
convertAbsoluteFileSystem
将平台绝对路径转换成本地URL路径
<span style="background-color:#333333"><span style="color:#474747"><code>
<span style="color:#98fb98">String</span><span style="color:#ffffff"> plus</span><span style="color:#ffffff">.</span><span style="color:#ffffff">io</span><span style="color:#ffffff">.</span><span style="color:#ffffff">convertAbsoluteFileSystem</span><span style="color:#ffffff">(</span><span style="color:#ffffff"> path </span><span style="color:#ffffff">);</sp