如何删除cordova ionic中一个位置中的所有文件

如何删除cordova ionic中一个位置中的所有文件,cordova,ionic-framework,Cordova,Ionic Framework,我是爱奥尼亚的新手。我需要删除本地驱动器位置中的所有文件。我试过下面的问题。但它不起作用 $cordovafile.removeFile(cordova.file.documentsDirectory,"filename").then(function(success){ console log("file removed"), function error(error){ console log("Error") });} 请建议您的解决方案。安装cordova插件添加cordova

我是爱奥尼亚的新手。我需要删除本地驱动器位置中的所有文件。我试过下面的问题。但它不起作用

    $cordovafile.removeFile(cordova.file.documentsDirectory,"filename").then(function(success){
console log("file removed"),
function error(error){
console log("Error")
});}

请建议您的解决方案。

安装
cordova插件添加cordova插件文件
然后将
$cordovaFile
注入控制器,类似这样的东西

 app.controller('MyCtrl', function($scope, $cordovaFile) {}
然后试试看

$cordovaFile.removeFile(path,file)
      .then(function (success) {
        // success
      }, function (error) {
        // error
      });

removeFile只删除单个文件,而不是删除整个目录。您可以通过
$cordovaFile.removeDir(路径,目录)

基本上,您列出文件夹中的文件,然后创建一个Promissions数组来删除每个文件。当删除所有内容时,调用.then(),以便继续处理您的内容

在完成以下操作后,本溶液可与离子1.x(也可能是2+,不知道)一起使用:

安装cordova插件添加cordova插件文件

我使用它与离子本机包装 我建议您创建一个服务

function FileSystemSrv($cordovaFile, $q)
{
    var service                         = {}; 
    service.data_storage_root           = "";
    service.resolved_data_storage_root  = "";
    //====================================================
    service.init = function(data_storage_root)
    {  
        service.data_storage_root           = data_storage_root;
        service.resolved_data_storage_root  = cordova.file[service.data_storage_root];
        return service.resolved_data_storage_root;        
    };    
    //--------------------------------------------------------------
    service.getExtension = function(fullname)
    {
        var arr = fullname.split(".");
        return arr[arr.length-1];
    };    
    //-------------------------------------------------------------------
    // invoke the then(), returning 1 or 0, instead of invoking the success or error callbacks
    service.existFile = function(relative_path)
    {
         return $cordovaFile.checkFile(service.resolved_data_storage_root, relative_path)
        .then(function (success){
            return 1;  
        })
        .catch(function (error){
            return $q.resolve(0);
        });        
     };


    //--------------------------------------------------------------
    //return all the files contained in a folder, belonging to the [valid_extensions] formats.
    service.listFilesInDir = function(relative_path, valid_extensions)
    {
        var len_ext = 0;
        if(valid_extensions != null) len_ext = valid_extensions.length;

        return $cordovaFile.listDir(service.resolved_data_storage_root, relative_path)
        .then(function(dirs)
        {
            var len = dirs.length;
            var arr = [];
            var cnt = 0;
            for (d=0; d<len; d++)
            {
                if (!dirs[d].isDirectory)
                {
                    var insert = false;
                    if(len_ext)
                    {
                        // filter input files: show only some extensions
                        var ext = service.getExtension(dirs[d].name);
                        for (e=0; e<valid_extensions.length; e++)
                        {    
                            if( ext == valid_extensions[e])
                            {
                                insert = true; 
                                break;
                            }
                        }
                    }
                    else insert = true;
                    if(insert)
                    {
                        arr[cnt] = dirs[d].name;
                        cnt++;
                    }
                }
            }
            return arr;            
        })
        .catch(function(error){
            console.log("FileSystemSrv::listFilesInDir" + error.message);
            return $q.reject(error);
        });
    };    

    service.deleteFile = function(relative_path)
    {
        return service.existFile(relative_path)
        .then(function(exist){        
            if (exist)  return $cordovaFile.removeFile(service.resolved_data_storage_root, relative_path);
            else        return 1;
        })
        .catch(function(error){
            console.log("FileSystemSrv::deleteFile" + JSON.stringify(error));            
            return $q.reject(error);
        });
    };

    service.deleteFilesInFolder = function(relative_path, valid_extensions)
    {
        return service.listFilesInDir(relative_path, valid_extensions)
        .then(function(files)
        {
            var subPromises = [];
            for (var f=0; f<files.length; f++) 
            {
                (function(fname) 
                {
                    var subPromise  = service.deleteFile(fname)
                    subPromises.push(subPromise);
                })(relative_path + "/" + files[f]);
            }
            return $q.all(subPromises);
        })
        .then(function()
        {
            return $q.defer().resolve(1);
        })
        .catch(function(error)
        {
            console.log("FileSystemSrv::deleteFilesInFolder" + JSON.stringify(error));            
            $q.reject(error);
        });
    };
    return service;
}
main_module.service('FileSystemSrv', FileSystemSrv);

谢谢你的建议。我不想删除整个目录。我只想删除路径中的文件。可能吗?
$cordovaFile.removeFile(路径,文件)
此方法只会删除指定的文件,这很好。是否有任何方法可以删除N个文件?我认为最好创建一个新目录,并复制所有需要删除的文件,然后删除该目录
$scope.deleteSession = function() 
{
    FileSystemSrv.init("externalRootDirectory");

    return FileSystemSrv.deleteFilesInFolder($scope.relpath, ["wav", "jpg"])       // relpath = "AFolder/asubfolder" a subfolder of externalRootDirectory
    .then(function()
    {
        // do something  
    })
    .catch(function(error){
        alert(error.message);
    });
};