Phonegap / Cordova文件系统dirEntry.isDirectory应该在完全错误时生成错误

时间:2014-09-27 14:53:21

标签: javascript cordova filesystems

我在Android上测试,我有:

function initialize(){
    console.log('into initialize');
    document.addEventListener('deviceready', onDeviceReady, false);
}

function onDeviceReady(e){
    window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, onSuccess, errorHandler);
}

function onSuccess(fs){
    fs.root.getFile('log.txt',{},function(fileEntry){console.log('the file is: ' + fileEntry.isFile);},errorHandler);
    fs.root.getDirectory('MyPictues',{},function(dirEntry){if(!dirEntry.isDirectory){console.log('My Pictures is not a directory');} else {console.log('My Pictures is a directory');}},errorHandler);
}

function errorHandler(e) {
  var msg = '';

  switch (e.code) {
    case FileError.QUOTA_EXCEEDED_ERR:
      msg = 'QUOTA_EXCEEDED_ERR';
      break;
    case FileError.NOT_FOUND_ERR:
      msg = 'NOT_FOUND_ERR';
      break;
    case FileError.SECURITY_ERR:
      msg = 'SECURITY_ERR';
      break;
    case FileError.INVALID_MODIFICATION_ERR:
      msg = 'INVALID_MODIFICATION_ERR';
      break;
    case FileError.INVALID_STATE_ERR:
      msg = 'INVALID_STATE_ERR';
      break;
    default:
      msg = 'Unknown Error';
      break;
  };
  console.log('Error: ' + msg);
}

我在加载文档时调用initialize()。 奇怪的是在if这一行:

fs.root.getDirectory('MyPictues',{},function(dirEntry){if(!dirEntry.isDirectory){console.log('My Pictures is not a directory');} else {console.log('My Pictures is a directory');}},errorHandler);

我在我的根目录中有一个名为" MyPictures"的目录,在我上面拼错了它试图验证是否" MyPictues"存在,但我得到了'NOT_FOUND_ERR'从交换机而不是简单地获取日志:'我的图片不是目录'。 如果我在没有拼错名称的情况下进行测试,我会得到正确的行为。

1 个答案:

答案 0 :(得分:2)

不要在文档加载时调用initialize()函数,写

document.addEventListener('deviceready', onDeviceReady, false);

在函数外部,在写入onDeviceReady方法后,将在设备准备好时调用 那个时候你不会得到任何错误。 如

 <script>
 document.addEventListener('deviceready', onDeviceReady, false);

 function onDeviceReady(e){
   window.requestFileSystem(LocalFileSystem.TEMPORARY, 0, onSuccess, errorHandler);
}

function onSuccess(fs){
  fs.root.getFile('log.txt',{},function(fileEntry){console.log('the file is: ' +     fileEntry.isFile);},errorHandler);
  fs.root.getDirectory('MyPictues',{},function(dirEntry){if(!dirEntry.isDirectory){console.log('My Pictures is not a directory');} else {console.log('My Pictures is a directory');}},errorHandler);
 }

function errorHandler(e) {
 var msg = '';

switch (e.code) {
case FileError.QUOTA_EXCEEDED_ERR:
  msg = 'QUOTA_EXCEEDED_ERR';
  break;
case FileError.NOT_FOUND_ERR:
  msg = 'NOT_FOUND_ERR';
  break;
case FileError.SECURITY_ERR:
  msg = 'SECURITY_ERR';
  break;
case FileError.INVALID_MODIFICATION_ERR:
  msg = 'INVALID_MODIFICATION_ERR';
  break;
case FileError.INVALID_STATE_ERR:
  msg = 'INVALID_STATE_ERR';
  break;
default:
  msg = 'Unknown Error';
  break;
 };
  console.log('Error: ' + msg);
 }
 </script>