FileReader(cordova-plugin-file)失败

问题描述 投票:0回答:1

我正在尝试使用cordova-plugin-file插件读取和写入文件。编写文件似乎可以正常工作,但是当我去读取文件时,它不起作用,并且运行我设置的失败回调。


function getData(fetch) {
    alert('Getting data')
    window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
    fs.root.getFile(department + ".txt", { create: false, exclusive: false }, function (fileEntry) {
        alert('reading this file: ' + JSON.stringify(fileEntry))
        readFile(fileEntry);
    }, addDepartment);
    });

    if (typeof sessionStorage.currentGroup != 'undefined') {groupData = dataActive[sessionStorage.currentGroup];}
    if (typeof sessionStorage.currentSubgroup != 'undefined') {subgroupData = groupData[sessionStorage.currentSubgroup];}
    if (typeof sessionStorage.currentItem != 'undefined') {itemData = subgroupData[sessionStorage.currentItem];}
    if (typeof itemData != 'undefined') {
    UCC = itemData.UCC;
    GTIN = itemData.GTIN;
    ProductionDate = itemData.ProductionDate;
    Weight = itemData.Weight;
    SerialNum = itemData.SerialNum;
    }
    fetch();
}


function readFile(fileEntry) {
    alert('Reading file')

    fileEntry.file(function (file) {
        var reader = new FileReader();

        reader.onloadend = function() {
            console.log("Successful file read: " + this.result);
            window.dataActive = JSON.parse(this.result);
            alert('dataActive was read as: ' + dataActive)
            displayFileData(fileEntry.fullPath + ": " + this.result);
        };
        reader.readAsText(file);

    }, alert('failed to read file!'));
}

我一直在“无法读取文件”,并且其余代码无法运行,因为没有数据(我需要文件中的数据)。我已经为此工作了几个小时,完全不知道。任何一点帮助都将是天赐之赐!我对Javascript和phonegap / cordova有点陌生,所以请耐心等待。预先感谢!

更新:

我已尝试调试我的代码,因为它充满了问题,但是现在我已降至最低限度,并且我已仔细检查了所有内容,但我仍然不知道问题出在哪里。我已经非常仔细地遵循了文档示例(https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-file/),但这根本行不通。当读取文件时,我一直保持为空。我的代码如下:

请帮助我,我很困!


window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {

    fs.root.getFile("newPersistentFile.txt", { create: true, exclusive: false }, function (fileEntry) {
        alert(JSON.stringify(fileEntry))
        // fileEntry.name == 'someFile.txt'
        // fileEntry.fullPath == '/someFile.txt'
        writeFile(fileEntry, 'sample text');
        readFile(fileEntry);

    }, function() {alert('onErrorCreateFile')});

}, function() {alert('onErrorLoadFs')});

function readFile(fileEntry) {

    fileEntry.file(function (file) {
        var reader = new FileReader();

        reader.onloadend = function() {
            console.log("Successful file read: " + this.result);
            //displayFileData(fileEntry.fullPath + ": " + this.result);
        };

        reader.readAsText(file);

    }, function() {alert('onErrorReadFile')});
}

function writeFile(fileEntry, dataObj) {
    // Create a FileWriter object for our FileEntry (log.txt).
    fileEntry.createWriter(function (fileWriter) {

        fileWriter.onwrite = function() {
            alert("Successful file write...");
            readFile(fileEntry);
            alert('Contents are: ' + this.result);
        };

        fileWriter.onerror = function (e) {
            alert("Failed file write: " + e.toString());
        };

        fileWriter.write(dataObj);
    });
}


cordova cordova-plugins phonegap-plugins phonegap
1个回答
0
投票

您使用的参数与内部函数不同。您的代码应如下所示:

function readFile(fileEntry) {
    alert('Reading file')

    fileEntry.file(function (fileEntry) {
        var reader = new FileReader();

        reader.onloadend = function() {
            console.log("Successful file read: " + this.result);
            window.dataActive = JSON.parse(this.result);
            alert('dataActive was read as: ' + dataActive)
            displayFileData(fileEntry.fullPath + ": " + this.result);
        };
        reader.readAsText(fileEntry);

    }, alert('failed to read file!'));
}
© www.soinside.com 2019 - 2024. All rights reserved.