2013-10-30 5 views
0

나는 Cordova 3.1.0에있는 파일의 디렉토리를 반복하고 있습니다. 각 항목마다 파일 이름과 수정 날짜를 원합니다.메타 데이터 코르도바의 파일 API

성공 콜백에서 Metadata 객체를 반환하는 FileEntry 객체에서 getMetadata 메소드를 사용하고 있지만 FileEntry 객체에 해당 Metadata 객체를 다시 묶을 수는 없습니다.

이것은 파일 이름 배열과 수정 날짜 배열이 있지만이 둘 사이에는 링크가 없음을 의미합니다. 심지어 다른 콜백을 사용하여 참여하는 비록 내가 @dandavis의 조언을 따라 entry.file.lastModifiedDate을 사용

// 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 ...를 사용하여 그들을 숨길 수 있습니다. 그런 하위 속성 뒤에있는 실제 객체는 .file을 항목과 병합하지 않는 이유는 무엇입니까? 어쨌든, 적어도 그것은 가능합니다 ... – dandavis

답변

0

결국 :

여기 내 코드입니다.

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

희망이 같은 challenge.I이 방법으로 해결

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