我正在尝试读取用户目录中的所有文件并在文本框中显示其内容。
读取单个文件效果很好,但是,当我尝试读取整个目录时,事情变得很奇怪。
遍历目录时,仅正确读取目录中的最后一个文件。无论目录中有多少文件,此行为都是一致的。
这是我用来读取文件的代码:
results.forEach(function(item) {
reader = new FileReader();
// This line is reached
console.log("filename: " + item.name);
item.file(function(File) {
// This one only for the last file in that directory
reader.readAsText(File);
console.log("success");
});
// This line is reached
console.log("read: " + item.name);
});
这是日志(来自开发工具):
filename: app.js
read: app.js
filename: main.js
read: main.js
filename: SharedPreferences.js
read: SharedPreferences.js
filename: KeyConstants.js
read: KeyConstants.js
success
如果您有任何问题,请询问他们,我已经尝试了几个小时了,我已经慢慢厌倦了一遍又一遍的失败..
最佳答案
发生这种情况是因为 FileReader
异步工作,这大约意味着它在代码继续执行的同时开始执行任务(读取文件)。如果您想在加载完成后立即对每个文件的结果执行某些操作,则需要使用此方法:
reader.onloadend = function(evt) {
// file is loaded
// do something with evt.target object
};
关于javascript - readAsText(file) 只读取目录中的最后一个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42496459/