Недавно я работал над этой темой на моей фактической работе, и все исследования пошли на эту функцию availableBytes, которую вы можете увидеть ниже:
function onInitFs(fs) {
var appDirectory = fs.root;
window.alert("Directorio de trabajo: " + appDirectory.toURL());
availableBytes(function (free_bytes) {
console.log("Interal free space(root + internal): " + (free_bytes / (1024 * 1024 * 1024)).toFixed(0) + "GB");
});
}
//Function used to know available space in internal storage
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)
})
}
}
Как вы можете видеть, мы можем легко узнать размер внутреннего хранилища, но корневой (где я храню загруженные видео и музыку, а там, где клиенты не могут легко добраться), нельзя "спросить" так... Кто-нибудь знает правильный способ сделать это?
Чтобы получить доступное пространство устройства, вы должны добавить плагин cordova-file-plugin: https://github.com/apache/cordova-plugin-file/
Затем, после вашего устройства, вы можете запустить следующий код:
cordova.exec(function(result) {
alert("Free Disk Space: " + result);
}, function(error) {
alert("Error: " + error);
}, "File", "getFreeDiskSpace", []);
Это предупредит об общей площади в килобайтах, просто преобразуется в мегабайты или гигабайты.