0

在我们的应用程序中,我们正在读取一个文件以使用 phonegap 文件系统获取消息详细信息。它主要在android中工作,但在windows phone 7中,当我读取相同的文件时,文件系统经常得到“空或未定义”。我将在下面粘贴我的代码以供参考。

this.getMessageContent = function(){
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, onFileSystemSuccess, onProcessFailure);
};


function onFileSystemSuccess(fileSystem){
    fileSystem.root.getFile("/app/www/Notifications.txt", null, gotFileEntry, onProcessFailure);
    console.log("File system name"+fileSystem.name);
    console.log("File root name"+fileSystem.root.name);
}


function gotFileEntry(fileEntry) {
    fileEntry.file(readFileContent, onProcessFailure);
}


 function readFileContent(file) {
    console.log("File Size-->"+file.size);
    console.log("File url-->"+file.fullPath);
    var reader = new FileReader();
    reader.onloadend = function(evt) {
        console.log("Read as text");
        var contentLength = evt.target.result;
        if(evt.target.result){
            console.log("File Content Non-Empty-->"+evt.target.result);
        }else{
            console.log("File Content Empty-->"+evt.target.result);
        }
    };
    reader.readAsText(file);
}


function onProcessFailure(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('Notification File Related Error: ' + msg);
}

上面的代码有时可以正常工作,有时会抛出以下错误

Log:"Error in error callback: File672824422 = TypeError: Unable to get value of the property 'getFile': object is null or undefined"

phonegap fileSystem 对象经常变为 null 或未定义。

我有一个链接,点击我正在调用函数 this.getMessageContent() 来读取文件。我无法弄清楚文件系统对象如何在 windows phone7 中频繁地变为空或未定义。

4

1 回答 1

0

您可以尝试使用其他方法访问该文件

var xhr = new XMLHttpRequest();

xhr.open('GET', 'Notifications.txt', false);
xhr.onreadystatechange = function () {
  if (xhr.readyState == 4) {
    if (xhr.status == 200) { 
        console.log(xhr.responseText); 
      }

    }
}

xhr.send(null);
于 2013-01-24T19:55:10.100 回答