我正在尝试使用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/),但它就是不能工作。当它读取文件时,我一直得到null。我的代码如下:
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);
});
}发布于 2019-10-21 04:38:32
您正在使用的参数与内部的函数不同。您的代码应如下所示:
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!'));
}发布于 2019-10-25 17:56:25
我终于明白了!老实说,我不确定我一开始做错了什么,但在旋转了我的轮子似乎很长一段时间后,我终于让它工作了。这是我的代码。这只是一个示例,所以它实际上不会做任何有用的事情,但是如果有人遇到了同样的问题,希望这也能帮助他们,他们可以根据需要进行编辑。
window.requestFileSystem(LocalFileSystem.PERSISTENT, 0, function (fs) {
fs.root.getFile("newPersistentFile2.txt", { create: true, exclusive: false }, function (fileEntry) {
// fileEntry.name == 'someFile.txt'
// fileEntry.fullPath == '/someFile.txt'
//var sample = new Blob(['some file data'], { type: 'text/plain' }); this works too or you can just use ['some file data'] like below
writeFile(fileEntry, ['some file data']);
}, function() {alert('onErrorCreateFile')});
}, function() {alert('onErrorLoadFs')});
function readFile(fileEntry) {
fileEntry.file(function (file) {
var reader = new FileReader();
reader.onload = function() {
alert("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);
};
fileWriter.onerror = function (e) {
alert("Failed file write: " + e.toString());
};
fileWriter.write(dataObj);
});
}https://stackoverflow.com/questions/58475464
复制相似问题