function GetDirInfo()
{
var mq = '/storage/emulated/0/tencent/msflogs/com/tencent/mobileqq/';
var mqsz = 0;
var mqfs = 0;
plus.io.resolveLocalFileSystemURL(mq,
function(dirent){
alert('OK');
var dirRd = dirent.createReader();
dirRd.readEntries(
function(subents){
if(!subents) return;
for(var i=0; i<subents.length; i++) {
subents[i].getMetadata(
function(metadata){
mqsz += metadata.size;
mqfs += 1;
},
function(ex){
alert(ex.message);
},
false
);
}
// 显示结果
alert('Size = ' + mqsz + '('+ (mqsz/1024.0/1024.0).toFixed(2) +' MB)' + ', File = ' + mqfs);
},
function(ex) {
alert(ex.message);
}
);
},
function(ex){
alert(ex.message);
}
);
}
遍历目录下的文件,计算文件的大小之和。点 button 调用 GetDirInfo(),点第一次正确,多点几次就会出现不正确的结果(遍历出来文件比实际少)。不知道是bug,还是我用法不对。。
3 个回复
gmxyb (作者)
。。。我好象明白了什么,subents[i].getMetadata 这个是异步回调执行的,在循环之后直接alert 结果是不是有问题啊?
maq
是这个道理。问题是,为啥会【点第一次正确】呢?
gmxyb (作者)
改了一下,这回OK了~~