Skip to content
返回

PhoneGap 中的 FileSystem

在阅读之前,你最好先熟悉 FileSystem API。我强烈向你推荐这篇文章

最近做一个 PhoneGap 程序要读写手机里的文件,于是深入研究了一番在 PhoneGap 里的文件系统。下面的结论都是在小米3手机上测试出来的,在其它手机上可能会有点不同。

手机文件系统的关键目录

首先,必须得安装这个插件:cordova-plugin-file 并仔细阅读这个插件的自述文档。

为了看看自述文档里的 cordova.file 到底是个什么东西,我在 GapDebug 把这个对象打印出来了: cordova.file

由此可以看到,这些关键的目录分为两种:内部存储目录和外部存储(即 SD 卡)目录。

但是目前的许多安卓手机也开始向 iPhone 学习,不允许安装 SD 卡了,比如我使用的小米3就是如此。经过反复测试,发现此时应该使用外部存储目录,即上图中的 external***Directory。一个可能的猜想:如果 external***Directory 不是 null,则应该使用外部存储目录。

开始使用 FileSystem

在调用 window.requestFileSystem() 函数的时候,请求临时文件系统(window.TEMPORARY)得到的 fs.root 就是 cordova.file.externalRootDirectoryDirectoryEntry 对象,请求持久化的文件系统(window.PERSISTENT)得到的 fs.root 就是 cordova.file.externalCacheDirectoryDirectoryEntry 对象。实际上,这两种对象都可以通过 window.resolveLocalFileSystemURL() 得到,这意味着你并不需要调用 requestFileSystem 来得到它们。

结语

是的,这篇文章并不长,但是我为此绕了半天的圈子。原因在于我并不知道小米3里所谓的“内部存储”实际上是 cordova.file 的外部存储目录,所以导致我总是读不到文件。另外吐槽一下小米3的 miui 系统真是麻烦,开启个 USB 调试还要绕很大的圈子,你可以参考这篇文章感受一下。


分享这篇文章:

上一篇
SASS 中的 @extend、@mixin 与重复的 css 片段
下一篇
给 angularjs-requirejs-rjs-md5 加上 cdn 前缀的功能