2014-10-24 1 views
0

현재 스크립트는 안드로이드 OS에서 실행 중입니다.파일 읽기 실패

전역 파일

///Store Global Variables 
var Globals = { 
    Storage: window.localStorage, 
    OfflineMode: false, 
    GetSettingsString : function() 
    { 
     return JSON.stringify(Settings); 
    }, 

    SetSettings : function(str) 
    { 
     try 
     { 
      Settings = JSON.parse(str); 

      if(Settings.Id != 0) 
       VelocityMeetings.app.navigate("scan/", { root: true }); 
     } 
     catch(e) 
     { 
      alert(e); 
      Globals.SetSettings(); 
     } 
    }, 
    ///Experimentation Function 
    SetSettings: function() { 
     //Settings = JSON.parse(str); 

     Settings.OfflineMode = false, 
      Settings.Username = "mager1794", 
      Settings.Password = "mn1apwfm", 
      Settings.Id = 0; 

     alert("Values Set Manually"); 

     //VelocityMeetings.app.navigate("scan/", { root: true }); 
    }, 

    Init: function() { 
     // this.SetSettings(/*FileStream.ReadFile("settings.dat")*/); 
     alert("test2"); 
     this.SetSettings(FileStream.ReadFile("settings.dat")); 
     alert("test3"); 

    }, 

    Save: function() { 
     FileStream.WriteFile("settings.dat", GetSettingsString()); 
    } 

}; 

document.addEventListener("deviceready", ondeviceReady(), false); 



// Cordova is ready to be used! 
// 
function ondeviceReady() { 
    alert("test"); 
    Globals.Init(); 

} 

파일 시스템 파일

var FileStream = { 

    WriteFile: function (filename, objtoWrite) { 

     _filename = filename; 
     _dataobj = objtoWrite; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, _gotFSWrite, fail); 
    }, 

    WriteFile: function (filename, objtoWrite, type) { 

     _filename = filename; 
     _dataobj = objtoWrite; 
     _type = type; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, _gotFSWrite, fail); 
    }, 

    ReadFile: function (filename) { 
     alert("ReadFile Called"); 
     _filename = filename; 
     window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, _gotFSRead, fail); 

     return _dataread; 
    }, 

    _dataread: null, 
    _dataobj: null, 
    _type : "WRITE", 
    _filename: "", 
    _gotFileWriter: function (writer) { 
     writer.onwrite = function (evt) { 
      _isBusy = false; 
     }; 
     if(_type=="WRITE") 
      writer.write(_dataobj); 
     if (_type == "APPEND") 
     { 
      writer.seek(writer.length); 
      writer.write(_dataobj); 
     } 
     writer.abort(); 
    }, 

    _gotFSWrite: function (fileSystem) { 
     fileSystem.root.getFile(_filename, { create: true }, _gotFileEntryWrite, fail); 
    }, 
    _gotFileEntryWrite: function (fileEntry) { 
     fileEntry.createWriter(_gotFileWriter, fail); 
    }, 
    _gotFSRead: function (fileSystem) { 
     alert("gotFSRead Called"); 
     fileSystem.root.getFile(_filename, { create: true }, _gotFileEntryRead, fail); 
    }, 
    _gotFileEntryRead: function (fileEntry) { 
     alert("gotFileEntryRead Called"); 
     fileEntry.file(_gotFileRead, fail); 
    }, 
    _gotFileRead: function (file) { 
     alert("gotFileRead Called"); 
     var reader = new FileReader(); 
     reader.onloadend = function (evt) { 
      _dataread = evt.target.result; 
     }; 
     reader.readAsText(file); 

    }, 
    _fail: function (error) { 
     throw "File Failed"; 

    } 
}; 

GotFSRead 기능에 도달되고 있지 않습니다와, 내가 경고에 배치 한 이유는 그래서 그것을로 볼 수 알아낼 수 없습니다 기능을 통해 발전했습니다. 또한 변수에 콜백을 저장할 수 있습니까? 왜냐하면 읽기 파일 함수가 성공적으로 데이터를 받기 위해 콜백을 필요로 할 것 같기 때문입니다.

답변

0

예, 자바 스크립트 함수는 객체이므로 여기에서 코드에서 수행하는 것처럼 변수에 할당 할 수 있습니다.

FileStream 개체의 함수 참조에 과 같은 this 참조가 없습니다. 예를 들어 :

ReadFile: function (filename) { 
    alert("ReadFile Called"); 
    this._filename = filename; 
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, this._gotFSRead, this._fail); 

    return this._dataread; 
}, 

이 누락 된 많은 장소가있다, 당신은 너무 당신의 _fail 참조를 수정해야합니다.