1

reader.readAsText()我想通过设置一个调用函数的间隔来不断观察变化的 XML 文件的内容。我可以访问数据,直到第一次更新 XML 文件。

从那时起,阅读器在尝试读取文件时会抛出一个名为“NotReadableError”的 DOMException。然后我必须通过打开文件对话框重新打开文件,我不想这样做。

有什么建议么?这甚至可能吗?

简化的代码如下所示:

window.onload = function() {
  setInterval(checkFile, 200);
}

function checkFile() {
  var input = document.getElementById("file");
  var file = input.files[0];
  var reader = new FileReader();
  reader.onload = function(event) {
      //stuff 
    };
    reader.readAsText(file);
  }
}

此致。

4

1 回答 1

0

有两个原因NotReadableError

File 或 Blob 的快照状态与底层存储的状态不匹配,这是 SnapshotState 失败的原因。

看来这可能意味着如果File在浏览器中选择后更改的状态发生更改,则无法再读取它。

如果出现以下情况,也可能发生错误:

无法读取文件或 Blob,通常是由于在建立快照状态后发生的权限问题(例如,与另一个应用程序同时锁定底层存储),这就是 FileLock 失败的原因。

也许您也遇到了这种情况,因为您正在尝试读取正在更新的文件,并且您的操作系统可能正在使用文件锁。

目前尚不清楚您遇到的是哪种情况,并且规范中似乎没有任何内容可以确定导致此错误的原因。我怀疑快照问题是您遇到的问题,并且浏览器 APIFile不允许您做您希望做的事情。也许您要解决的根本问题还有另一种解决方案。

于 2020-05-29T16:20:53.690 回答