PhoneGap(Android)删除目录
我正在尝试使用Android上的PhoneGap(Android)删除目录,android,cordova,Android,Cordova,我正在尝试使用Android上的PhoneGap删除目录及其内容: deleteDirectory = function deleteDirectory(uri) { uri = uri.substring(0, uri.lastIndexOf('/')); return $.Deferred(function (def) { fileSystem.root.getDirectory(uri, { create: false
PhoneGap
删除目录及其内容:
deleteDirectory = function deleteDirectory(uri) {
uri = uri.substring(0, uri.lastIndexOf('/'));
return $.Deferred(function (def) {
fileSystem.root.getDirectory(uri, {
create: false
}, function (directory) {
directory.removeRecursively();
def.resolve();
}, function (error) {
resolveError("Error deleting directory: ", error, def);
});
}).promise();
}
出现以下错误:文件不允许修改错误
我已确认此权限已设置:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我还应该去哪里寻找呢?我已经用这种方法完成了:
function ClearDirectory() {
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, fail);
function fail(evt) {
alert("FILE SYSTEM FAILURE" + evt.target.error.code);
}
function onFileSystemSuccess(fileSystem) {
fileSystem.root.getDirectory(
"yours/dir/ect/ory",
{create : true, exclusive : false},
function(entry) {
entry.removeRecursively(function() {
console.log("Remove Recursively Succeeded");
}, fail);
}, fail);
}
}
由此:
如果您想访问,我建议使用resolveLocalFileSystemURL
cordova.file.*下的位置(例如cordova.file.dataDirectory),其中
大多数情况下(如果不总是),如果需要,请使用requestFileSystem
需要访问文件系统的根目录
这也节省了一些代码行,并且可读性更强:
deleteFolder(fileName: string) {
const uri = `${cordova.file.dataDirectory}${fileName}`;
window.resolveLocalFileSystemURL(uri, (dirEntry: DirectoryEntry) => {
dirEntry.removeRecursively(
() => console.log('successfully deleted the folder and its content'),
e => console.error('there was an error deleting the directory', e.toString())
)
});
}
这是一个值得期待的版本:
deleteFolder(fileName: string): Promise<void> {
const promise = new Promise<void>((resolve, reject) => {
const uri = `${cordova.file.dataDirectory}${fileName}`;
window.resolveLocalFileSystemURL(uri, (dirEntry: DirectoryEntry) => {
dirEntry.removeRecursively(() => resolve(), e => reject(e));
}, e => reject(e));
});
return promise;
}
deleteFolder(文件名:string):承诺{
持续承诺=新承诺((解决、拒绝)=>{
常量uri=`${cordova.file.dataDirectory}${fileName}`;
resolveLocalFileSystemURL(uri,(dirEntry:DirectoryEntry)=>{
dirEntry.removersively(()=>resolve(),e=>reject(e));
},e=>拒绝(e));
});
回报承诺;
}
您要删除的目录是什么?它是在sd卡上还是在内部存储器上?在Nexus 7的下载文件夹中添加了一个子文件夹:file:///storage/sdcard0/Download/somedir/dirtodelete
我想这将被视为内部存储,因此写入外部存储将不起作用。。。将添加WRITE\u INTERNAL\u STORAGE
以查看是否就是这样。WRITE\u INTERNAL\u STORAGE似乎也不起作用。您不是第一个抱怨Nexus 7异常行为的人。我得看看是否有人可以运行测试套件。