我正在循环访问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?
}
答案 0 :(得分: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]);
}
}
答案 1 :(得分: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};
}
希望这有助于将来的其他人