如何在Cordova Ionic的一个位置中删除所有文件



我是离子的新手。我需要在本地驱动器位置删除所有文件。我尝试了以下查询。但这不起作用

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

请建议您的解决方案。

安装cordova plugin add cordova-plugin-file然后将$cordovaFile注入您的控制器,像这样的东西

 app.controller('MyCtrl', function($scope, $cordovaFile) {}

然后尝试

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

removefile 仅删除单个文件,而不是您可以通过$cordovaFile.removeDir(path,directory)

删除整个目录本身

基本上是在文件夹中列出文件,然后创建一个删除每个文件的承诺的数组。当删除所有这些时,请调用..

完成后,目前的解决方案可与Ionic 1.x(可能也是2 ,不知道(一起使用:

安装Cordova插件添加Cordova-Plugin-File。

我将其与离子原始包装器一起使用我建议您创建服务

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

然后在您的控制器(注入服务(中创建此方法:

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

相关内容