2015-08-28 47 views
0

使用cordova和apache/cordova-plugin-file插件,我怎样才能得到一个给定目录中超过30天的文件并删除它们?Cordova检索并删除超过30天的文件?

+1

看看这里:http://docs.phonegap.com/en/edge/cordova_file_file.md.html你要找的是lastModifiedDate。 – Gusman

回答

2

尝试使用此代码:

function daysDiff(now, fileDate) { 
    // thanks to http://stackoverflow.com/a/3224854/3340702 
    var timeDiff = Math.abs(now.getTime() - fileDate.getTime()); 
    return Math.ceil(timeDiff/(1000 * 3600 * 24)); 
} 

// Process file entries 
function deleteOlderFiles(entries) { 
    var i; 
    var currentDate = new Date(); 
    for (i=0; i<entries.length; i++) { 
     if(entries[i].isFile) { 
      entries[i].file(function(file) { 
       if(daysDiff(currentDate, file.lastModifiedDate) > 30) { 
        entries[i].remove(function(){ 
         console.log("File removed"); 
        }, function(){ 
         console.log("Error while removing file"); 
        }); 
       } 
      }), error); 
     } 
    } 
} 

function fail(error) { 
    alert("Failed during operations: " + error.code); 
} 

// Get a directory reader 
var directoryEntry = new DirectoryEntry(name, path); 
var directoryReader = directoryEntry.createReader(); 

// Get a list of all the entries in the directory 
directoryReader.readEntries(deleteOlderFiles, fail); 

更多信息请参见DirectoryEntryDirectoryReaderFileEntry文档。

+0

在仔细观察这个之后,我意识到这并不完全正确。 fileEntry上的文件方法是异步方法,但这非常接近。 http://docs.phonegap.com/en/edge/cordova_file_file.md.html#FileEntry – d0001

+1

我将回调添加到remove方法,以便您可以跟踪成功/错误状态。 – lifeisfoo

+0

条目[i] .file()是异步的。 – d0001