Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 文件读取失败_Javascript_File_Cordova - Fatal编程技术网

Javascript 文件读取失败

Javascript 文件读取失败,javascript,file,cordova,Javascript,File,Cordova,该脚本目前正在android操作系统上运行 全局文件 ///Store Global Variables var Globals = { Storage: window.localStorage, OfflineMode: false, GetSettingsString : function() { return JSON.stringify(Settings); }, SetSettings : function(str)

该脚本目前正在android操作系统上运行

全局文件

///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函数从未被访问过,我也不知道为什么,我将其放入了警报中,这样我就可以看到它在函数中的进展。另外,您可以在变量中存储回调吗?因为读取文件函数似乎需要回调才能成功接收数据。

是的,在Javascript中,函数是对象,因此它们可以被分配给变量,就像您在代码中所做的那样

FileStream对象中的函数引用缺少此引用,例如。\u gotFSRead。例如:

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

    return this._dataread;
},
有很多地方都缺少这个,你也需要修复你的失败引用