使用 Phonegap,我如何检查剩余的可用磁盘空间?

Posted

技术标签:

【中文标题】使用 Phonegap,我如何检查剩余的可用磁盘空间?【英文标题】:With Phonegap, how can I check how much free disk space remaining? 【发布时间】:2013-02-26 12:15:00 【问题描述】:

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

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

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

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

【问题讨论】:

你找到/创建了一个插件吗?愿意分享吗? @kioopi 不,我不知道。每次我必须开始下载操作时,我都使用带有字节下载的 window.requestFileSystem 解决了问题。如果没有足够的空间可用,window.requestFileSystem 会失败,我会停止下载并通知用户 【参考方案1】:

在找到this post 之前,我创建了自己的函数来执行此操作,尝试获取具有确定字节的文件系统,直到达到限制并递归地假定可用空间。由于回调,可能需要设置大于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)

【讨论】:

【参考方案2】:

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

cordova.exec(function(result) 
    alert("Free Disk Space: " + result);
, function(error) 
    alert("Error: " + error);
, "File", "getFreeDiskSpace", []);

【讨论】:

对我来说,这在 ios 上返回免费字节,在 android 上返回 -1。【参考方案3】:

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

Phonegap plugin development guide android implementation iOS implementation

【讨论】:

您可以查看此存储库中可用插件的列表:github.com/phonegap/phonegap-plugins/tree/master/Android

以上是关于使用 Phonegap,我如何检查剩余的可用磁盘空间?的主要内容,如果未能解决你的问题,请参考以下文章

Linux下每天自动执行查看磁盘剩余空间的shell文件

正在保存备份的磁盘没有足够的可用空间

Linux常用命令

如何检查存储设备 EC2 中的剩余空间

在linux下怎样将一个磁盘的剩余空间再分一个区

可用C 怎样获取linux上的各分区磁盘剩余空间