如何删除cordova ionic中一个位置中的所有文件
我是爱奥尼亚的新手。我需要删除本地驱动器位置中的所有文件。我试过下面的问题。但它不起作用如何删除cordova ionic中一个位置中的所有文件,cordova,ionic-framework,Cordova,Ionic Framework,我是爱奥尼亚的新手。我需要删除本地驱动器位置中的所有文件。我试过下面的问题。但它不起作用 $cordovafile.removeFile(cordova.file.documentsDirectory,"filename").then(function(success){ console log("file removed"), function error(error){ console log("Error") });} 请建议您的解决方案。安装cordova插件添加cordova
$cordovafile.removeFile(cordova.file.documentsDirectory,"filename").then(function(success){
console log("file removed"),
function error(error){
console log("Error")
});}
请建议您的解决方案。安装
cordova插件添加cordova插件文件
然后将$cordovaFile
注入控制器,类似这样的东西
app.controller('MyCtrl', function($scope, $cordovaFile) {}
然后试试看
$cordovaFile.removeFile(path,file)
.then(function (success) {
// success
}, function (error) {
// error
});
removeFile只删除单个文件,而不是删除整个目录。您可以通过
$cordovaFile.removeDir(路径,目录)
基本上,您列出文件夹中的文件,然后创建一个Promissions数组来删除每个文件。当删除所有内容时,调用.then(),以便继续处理您的内容
在完成以下操作后,本溶液可与离子1.x(也可能是2+,不知道)一起使用:
安装cordova插件添加cordova插件文件
我使用它与离子本机包装
我建议您创建一个服务
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);
谢谢你的建议。我不想删除整个目录。我只想删除路径中的文件。可能吗?
$cordovaFile.removeFile(路径,文件)
此方法只会删除指定的文件,这很好。是否有任何方法可以删除N个文件?我认为最好创建一个新目录,并复制所有需要删除的文件,然后删除该目录
$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);
});
};