我正在尝试使用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);
});
}
您使用的参数与内部函数不同。您的代码应如下所示:
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!'));
}