$ cordovaFile.createDir替换属性不起作用

时间:2014-12-17 17:26:54

标签: cordova ionic-framework

我发现不遵守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" />

2 个答案:

答案 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");
    });
}