我在此处保存文件:/storage/emulated/0/myApp/helloworld.wav
我正在尝试删除此文件
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中不起作用,除非设备是root的。
我使用了 - “ 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
}
答案 1 :(得分:0)
也许最好使用具有本机功能的插件,这样可以将文件保存到应该保存的位置,并保证读写访问权限。
您可以在此处查看:cordova-plugin-file
我不知道您尝试使用该代码的设备类型。在该页面中,您可以看到到不同操作系统(Android,iOS,Blackberry等)的所有不同文件系统路径。