我发现不遵守createDir方法中的replace属性。设置为true且文件已存在时,我收到错误代码12(PATH_EXISTS_ERR)。
$cordovaFile.createDir("test", true).then(function (result) {
console.log("Directory Created");
}, function(err) {
//This line is being called when the file already exists
console.log("Error creating directory: "+err);
});
如果有人对某项工作有所了解,那就太棒了。
大卫
为了彻底,我在config.xml中指定了以下内容,以指定默认文件位置。
<preference name="AndroidPersistentFileLocation" value="Internal" />
<preference name="iosPersistentFileLocation" value="Library" />
答案 0 :(得分:0)
我遇到了同样的问题。我在ng-cordova.js中修改createDir方法。像这样:
createDir: function (dir, replaceBOOL) {
var q = $q.defer();
getFilesystem().then(
function (filesystem) {
filesystem.root.getDirectory(dir, {
create: true,
exclusive: replaceBOOL
},
function () {
q.resolve();
},
function () {
q.reject();
});
}
);
return q.promise;
},
已经解决了。
答案 1 :(得分:0)
这是我提出的工作,不幸的是,这是必要的。
首先将removeDir函数添加到ng-cordova.js
removeDir: function(dir) {
var defer = $q.defer();
getDirectory(dir, {create: false}).then(
function(entry) {
entry.removeRecursively(
function(result) {
defer.resolve();
},
function(error) {
console.log("Error removing directory: "+error.code);
defer.reject(error);
}
);
},
function(error) {
console.log("Error retrieving directory - "+dir+" : "+error.code);
defer.reject(error);
}
);
return defer.promise;
},
然后检查目录并将其删除(如果有),否则只需创建目录
$cordovaFile.checkDir("test").then(
function(){
console.log("Directory Exists");
$cordovaFile.removeDir("test").then(
function(){
createDirectory();
}
)
},function() {
console.log("Directory Doesn't Exist");
createDirectory();
}
);
function createDirectory() {
$cordovaFile.createDir("queuedItems/images/" + sightingId, true).then(function (result) {
console.log("Directory Created");
}, function (err) {
console.log("Could not create directory for sighting");
});
}