2016-03-16 50 views
0

我救了我的文件位置:/storage/emulated/0/myApp/helloworld.wav无法使用cordova删除文件?

我试图删除这个文件

 window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, successCallback, errorCallback) 

     function successCallback(fs) { 
      fs.root.getFile('/storage/emulated/0/myApp/helloworld.wav', { 
       create: false 
      }, function(fileEntry) { 
       fileEntry.remove(function() { 
        alert('File removed.'); 
       }, errorCallback); 
      }, errorCallback); 
     } 

     function errorCallback(error) { 
      alert("ERROR: " + error.code) 
     } 

它不会删除该文件,并总是返回error code 1(未找到)。任何人都可以帮助我指出什么是错的。

当我从文件管理器检查

,这是我的文件是物理:/storage/emulated/0/myApp/helloworld.wav但它总是会返回错误代码1

+0

嗨,你可以共享更新的片段删除的文件,而不是文件目录。谢谢 –

回答

2

我觉得下面的线可能是问题, “window.requestFileSystem(LocalFileSystem.PERSISTENT,0,successCallback,errorCallback)

在一些我读的帖子,有人提到,requestfilsystem方法以及LocalFileSystem.PERSISTENT参数在Android中不起作用,除非该设备是植根的。

我做了它的工作使用 - “window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory,successCallback,errorCallback);

如果需要,我可以分享的示例代码中它与文件一起删除目录。请告诉我。希望能帮助到你。

下面是示例代码按要求,

function clearDirectory() { 

    if (sessionStorage.platform.toLowerCase() == "android") { 
     window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemDirSuccess, fail); 
    } else { 
     //for ios 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemDirSuccess, fail); 
    } 
}; 

function onFileSystemDirSuccess(fileSystem) { 
    var entry = ""; 
    if (sessionStorage.platform.toLowerCase() == "android") { 
     entry = fileSystem; 
    } else { 
     //for ios 
     entry = fileSystem.root; 
    } 
    entry.getDirectory("Folder_Name", { 
      create: true, 
      exclusive: false 
     }, 
     function(entry) { 
      entry.removeRecursively(function() { 
       console.log("Delete successful !!!"); 
      }, fail); 
     }, getDirFail); 
}; 

function getDirFail(error) { 
    alert("getDirFail - " + error.code); 
}; 

function fail(error) { 
    alert("fail - " + error.code); 
}; 

文件创建:

function writeFile() { 
      if (sessionStorage.platform.toLowerCase() == "android") { 
       window.resolveLocalFileSystemURL(cordova.file.externalRootDirectory, onFileSystemSuccess, onError); 
      } else { 
       window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onError); 
      } 

     }  

     function onError(e) { 
      alert("onError"); 
     }; 

     function onFileSystemSuccess(fileSystem) { 
      var entry = ""; 
      if (sessionStorage.platform.toLowerCase() == "android") { 
       entry = fileSystem; 
      } else { 
       entry = fileSystem.root; 
      } 
      entry.getDirectory("Folder_Name", { 
       create: true, 
       exclusive: false 
      }, onGetDirectorySuccess, onGetDirectoryFail); 
     }; 

     function onGetDirectorySuccess(dir) { 
      dir.getFile(filename, { 
       create: true, 
       exclusive: false 
      }, gotFileEntry, errorHandler); 
     }; 

     function gotFileEntry(fileEntry) { 
      // logic to write file in respective directory 
     }; 

     function errorHandler(e) { 
      // handle error 
     } 
+0

LocalFileSystem.PERSISTENT确实可以写作文件,我会尝试与resolveLocalFileSystemURL。你可以在你的代码中发布你的代码,这将是伟大的 –

+0

@LeonardoDaCodinchi,已经发布了代码在我的回复中,请让我知道它是否有帮助 – Gandhi

+0

这将删除目录,而不是文件当我尝试getFile时,它会抛出这个错误'''无法读取undefined'的属性'getFile' –

0

也许是最好的,如果你使用插件与本机的功能,这将保存文件,他们应该被保存,你将被保证读写访问权限。

您可以点击此处查看:cordova-plugin-file

我不知道你要使用的代码是什么样的设备。在该页面中,您可以看到不同操作系统(Android,iOS,Blackberry等)的所有不同文件系统路径。

+1

我很想知道为什么downvote,实际正确的答案使用这个插件常量..在原来的问题没有..谁downvoted,我想知道为什么,我只是想帮助,而且我认为我没有错误得到一个downvote。欢呼:) – Ariel

+0

你的问题最终在低质量的帖子队列中,因为它有被标记为“仅链接答案”的风险,仅供参考(不,我没有降低你的评分,所以我不能帮助你) –

+0

真棒!感谢您的解释。更好的质量为下一个答案:) – Ariel