0

我正在遍历 Cordova 3.1.0 中的文件目录。对于每个条目,我想要文件名和修改日期。

我在 FileEntry 对象上使用 getMetadata 方法,该方法在成功回调中返回 Metadata 对象,但无论如何我看不到将该 Metadata 对象绑定回 FileEntry 对象。

这意味着我有一组文件名和一组修改日期,但两者之间没有联系。

这是我的代码片段:

// DirectoryEntry.getDirectory callback
function gotPagesDir(d)
{
    var reader = d.createReader();
    reader.readEntries(function(d){
        gotFiles(d);
        appReady();
    }, onError);
}


function gotFiles(entries)
{
    for(var i in entries)
    {
        // __CACHED_FILES is a global scoped object
        __CACHED_FILES[entries[i].name] = {name: entries[i].name};
        entries[i].getMetadata(gotMetadata, metadataError);
    }
}

function gotMetadata(metadata)
{
    var date_modified = metadata.modificationTime;
    // How do I workout which FileEntry object this metadata object belongs to?
}
4

2 回答 2

1

我想删除所有超过 X(15) 天并面临同样挑战的文件或目录。我以这种方式修复了它。请看一看。希望它可以帮助某人

metaDataCallback : function metaDataCallback (dirEntry) {
              return function(metadata) {
                var currentDate = new Date();
                if(assetservice.daysDiff(currentDate, metadata.modificationTime) > Constants.DaysForCachingAssets) {
                  dirEntry.removeRecursively(function(){
                    console.log("File removed");
                  }, function(){
                    console.log("Error while removing file");
                  });
                }
              }
        }




 for (i=0; i<entries.length; i++) {
            if(entries[i].isFile) {
              entries[i].file(function(file) {
                if(daysDiff(currentDate, file.lastModifiedDate) > 15) {
                  entries[i].remove(function(){
                    console.log("File removed");
                  }, function(){
                    console.log("Error while removing file");
                  });
                }
              }, function (error){console.log(error);});
            } else
            {
              //directory
               entries[i].getMetadata(metaDataCallback(entries[i]), function (error){console.log(error);},entries[i]);
            }
}
于 2016-08-18T10:32:10.547 回答
0

最后,我遵循了@dandavis 的建议并使用了 entry.file.lastModifiedDate,尽管这涉及到使用另一个回调。

function gotFiles(entries)
{
    for(var i in entries)
    {
       entries[i].file(file_details_callback);
    }
}

function file_details_callback(f)
{
    __CACHED_FILES[f.name] = {name: f.name, lastModifiedDate: f.lastModifiedDate};
}

希望这对将来的其他人有所帮助

于 2013-10-31T12:20:07.893 回答