2017-05-02 3 views
0

Ich bin neu in ionischen. Ich muss alle Dateien in meinem lokalen Laufwerksort entfernen. Ich habe unten Abfrage versucht. Aber es funktioniert nichtWie alle Dateien an einem Ort in cordova ionic entfernen

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

Bitte schlagen Sie Ihre Lösung vor.

Antwort

1

installieren cordova plugin add cordova-plugin-file dann $cordovaFile zu Ihrem Controller wie diese dann versuchen

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

irgendeine Sache injizieren

RemoveFile nur einzelne Datei statt dass entfernen Sie ganze Verzeichnis entfernen sich durch $cordovaFile.removeDir(path,directory)

+0

Vielen Dank für Ihre suggestion.i möchte nicht das ganze Verzeichnis entfernen. Ich möchte nur Dateien im Pfad entfernen. Ist es möglich? – Gopal

+0

'$ cordovaFile.removeFile (Pfad, Datei)' Diese Methode wird nur die angegebene Datei – Edison

+0

entfernen, das ist in Ordnung. ist eine Methode zur Verfügung, N-Nummer der Datei zu entfernen – Gopal

0

Im Grunde listet man Dateien in einem Ordner auf und erstellt dann ein Array von Versprechen, die jede einzelne Datei löschen. Und wenn Sie alle gelöscht haben, rufen Sie die .then() auf, damit Sie mit Ihren Sachen weitermachen können.

die vorliegende Lösung arbeitet mit ionischer 1.x (möglicherweise auch 2+, weiß nicht), nachdem getan zu haben:

installieren cordova Plugin cordova-Plugin-Datei hinzufügen.

Ich benutze es mit ionischen-native Wrapper ich Ihnen vorschlagen, einen Dienst

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

und dann in Ihrem Controller (injizieren den Dienst) erstellen, diese Methode zu erstellen:

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