この投稿を見つける前に、これを行う独自の関数を作成し、制限に達するまで決定されたバイトでファイルシステムを取得し、空き領域を再帰的に想定します。コールバックのため、タイムアウトを 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)
}