【问题标题】:Cordova/Ionic - How to remove external storage file and directoryCordova/Ionic - 如何删除外部存储文件和目录
【发布时间】:2016-04-26 18:08:55
【问题描述】:

我试图删除整个目录(文件夹+文件夹下的文件)哪些文件下载到外部存储基目录:cordova.file.externalDataDirectory(like"file///storage/emulated/0/Android /data/com.yourapp/files")。

但是当我尝试通过 $cordovaFile 递归删除目录时,如下所示:

  var baseDirectory = cordova.file.externalDataDirectory + 'attachments';
  $cordovaFile.removeRecursively(baseDirectory,"")
      .then(function(success){
        console.log('Clear success');
      },function(err){
        loadingService.hideLoading();
   })

它抛出 NO_MODIFICATION_ALLOWED 错误:

当我检查文件夹权限时,我确实拥有写入/执行权限。有人知道为什么会这样吗?

顺便说一句,我也尝试过window.requestFileSystem,不幸的是,仍然没有成功。由于文件系统是本地文件系统,我尝试将条目更改为外部文件系统,如

entry.nativeURL = cordova.file.externalDataDirectory; 

但我想它不会起作用,因为读者那里什么都没有。那么有人对如何删除整个目录有任何建议吗?

提前致谢!

window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
    function fail(evt) {
      console.log("FILE SYSTEM FAILURE" + evt.target.error.code);
    }

    function onFileSystemSuccess(fileSystem) {
      fileSystem.root.getDirectory(
        "attachments",
        {create : true, exclusive : false},
        function(entry) {
          console.log(entry);
          entry.nativeURL = cordova.file.externalDataDirectory;
          var reader = entry.createReader();
          reader.readEntries(
            function(entries){
              console.log(entries);
            },
            function(err){
              console.log(err);
            }
          )

          entry.removeRecursively(function() {
           console.log('CLEAR success');
          }, fail);
        }, fail);
    }

【问题讨论】:

  • 任何错误代码为 6 的解决方案>>

标签: file cordova ionic-framework


【解决方案1】:

如果您使用的是 Android Marshmallow,请确保使用最新版本的 cordova 文件插件 (4.2.0),因为它修复了与权限相关的问题。目录删除的代码sn -p如下,

function clearDirectory() {
    if (ionic.Platform.isAndroid()) {
        window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemDirSuccess, fail);
    } else {
        window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemDirSuccess, fail);
    }

function onFileSystemDirSuccess(fileSystem) {
    var entry = "";
    if (ionic.Platform.isAndroid()) {
        entry = fileSystem;
    } else {
        entry = fileSystem.root;
    }
    entry.getDirectory("DIRECTORY_TO_DELETE", {
            create: true,
            exclusive: false
        },
        function(entry) {
            entry.removeRecursively(function() {
                console.log("Remove Recursively Succeeded");
            }, fail);
        }, getDirFail);
}

function getDirFail(error) {
    navigator.notification.alert("Error");
};

function fail(error) {
    navigator.notification.alert("Error");
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-06-20
    • 2016-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    相关资源
    最近更新 更多