3

我有一个 Phonegap 应用程序,它使用文件系统 API 将文件保存在设备文件系统上。

启动时,应用程序需要一些文件系统空间,window.requestFileSystem但运行时可以下载其他文件,我无法预测所需磁盘空间的总量。

这个想法是在下载开始之前检查可用空间,如果空间不够,则向用户发送一条消息。

Phonegap 有什么方法可以检查剩余的可用空间吗?

4

3 回答 3

1

在找到这篇文章之前,我创建了自己的函数来执行此操作,尝试获取具有确定字节的文件系统,直到达到限制并递归地假设可用空间。由于回调,可能有必要将超时设置为大于 0。在我的测试中,cordova.exec 方式和我的方式之间的差异非常小,并且可能会更好地降低限制值的准确性。

function availableBytes(callback, start, end){
    callback = callback == null ? function(){} : callback
    start = start == null ? 0 : start
    end = end == null ? 1 * 1024 * 1024 * 1024 * 1024 : end //starting with 1 TB
    limit = 1024 // precision of 1kb

    start_temp = start
    end_temp = end
    callback_temp = callback
    if (end - start < limit)
        callback(start)
    else{
        window.requestFileSystem(LocalFileSystem.PERSISTENT, parseInt(end_temp - ((end_temp - start_temp) / 2)), function(fileSystem){
            setTimeout(function(){
                availableBytes(callback_temp, parseInt(parseInt(end_temp - ((end_temp - start_temp) / 2))), end_temp)
            }, 0)
        }, function(){
            setTimeout(function(){
                availableBytes(callback_temp, start_temp, parseInt(end_temp - ((end_temp - start_temp) / 2)))
            }, 0)
        })
    }
}

可以像这样使用:

availableBytes(function(free_bytes){
    alert(free_bytes)
}
于 2014-07-09T18:09:41.173 回答
1

代码将调用 File 插件 (cordova.file.plugin) 的 getFreeDiskSpace 方法,并根据成功或错误回调,给你一个结果。如果达到成功回调,您将获得以千字节为单位的总可用磁盘空间。您可以通过简单的数学轻松转换为兆字节或千兆字节。

cordova.exec(function(result) {
    alert("Free Disk Space: " + result);
}, function(error) {
    alert("Error: " + error);
}, "File", "getFreeDiskSpace", []);
于 2017-05-29T16:11:42.110 回答
0

Phonegap 不提供此功能。解决方案是自己创建一个 phonegap 插件来检查可用空间。

于 2013-03-11T10:58:25.857 回答