2013-10-30 51 views
0

我正在循環Cordova 3.1.0中的文件目錄。對於每個條目,我想要文件名和修改日期。Cordova的File API中的元數據

我在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

爲什麼要使用getMetadata(),它只有日期,但File對象也是如此。 – dandavis

+0

@dandavis是否?我能看到的唯一道具是:filesystem,fullPath,isDirectory,isFile&name。我從FileEntry使用http://cordova.apache.org/docs/en/3.1.0/cordova_file_file.md.html#FileEntry – Dan

+0

,使用entry.file.lastModifiedDate ...有點笨,他們隱藏像這樣的子屬性背後的真正的對象,爲什麼不只是合併文件與條目?無論如何,至少它是可用的... – dandavis

回答

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}; 
} 

希望這可以幫助別人,將來

1

我想刪除所有這些都大於X(15)天的文件或目錄和其他面臨同樣challenge.I固定它以這種方式。請看一看。希望它可以幫助某人

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]); 
      } 
} 
相關問題