2014-12-17 3 views
2

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

를 작성,

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; }, 

그런 다음 디렉토리를 확인하고있을 경우,이를 제거 가지고 당신이 주입 된 $ cordova 파일 모듈? –

+0

예, $ cordovaFile 모듈이 올바르게 삽입되었으며 전화 갭 빌드로 테스트 한 결과도 모두 같습니다. 처음으로 디렉토리를 성공적으로 생성하고 이후의 각 시간은 오류를 반환합니다. – dykstrad

답변

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; 

}, 

해결되었습니다.

+0

죄송합니다,하지만 내 문제가 해결되지 않았다면 replaceBOOL이 true 일 때 q.reject()를 호출합니다. – dykstrad

+0

또한 기본 createDir은 이미 $ q 약속을 반환하므로 여기서 기본 기능을 무시할 필요가 없습니다. – dykstrad

+0

나는이 문제가 코드바 API로 더 깊이 들어가 있다고 생각하고있다. API를 직접 호출 할 때 배타적 인 옵션이 제대로 작동하지 않는 것처럼 보인다. – dykstrad

0

내가 생각해 낸 문제는 다음과 같습니다. 불행한 점이 있습니다.

먼저 겨-cordova.js하는 removeDir 기능을 추가 할 다른 단지 디렉토리

$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"); 
    }); 
} 
+0

나는 이것을 잠시 동안 해결책으로 보지 않을 것입니다. 다른 누군가가 더 나은 해결책을 가지고 있다면. – dykstrad