用JS持续读取本地文件吗?

时间:2018-12-13 20:07:19

标签: javascript file google-chrome local text-parsing

我一直到处都是,但是找不到重复读取与Chrome兼容的本地文本文件(与js和html文件位于同一文件夹中)的解决方案。

我需要不断读取文件进行更新,另一个程序会自动更新该文件,我不知道如何进行更新。这只是一个普通的text.txt文件。

我在这里已经阅读了很多关于它的问题/答案,但是到目前为止,我什么都没找到。有人可以帮忙吗?

edit:我的意思是也没有节点,只有香草JS。

2 个答案:

答案 0 :(得分:1)

您可以通过starting Chrome with it's security features disabled为本地文件启用XmlHttpRequest。这不是理想的解决方案,但这是无需运行某种服务器即可自动执行所需操作的唯一方法。使用Node监视文件中的更改并将数据通过WebSocket推送到浏览器将是处理此问题的正确方法。

或者,您可以使用FileReader API打开此本地文件,但是您需要首先通过const text = "help me on monday, january 8 take the dog out"; const weekdayRegex = /\b((mon|tues|wed(nes)?|thur(s)?|fri|sat(ur)?|sun)(day)?)\b/; const monthThenDayRegex = /(jan(uary)?|feb(ruary)?|mar(ch)?|apr(il)?|may|jun(e)?|jul(y)?|aug(ust)?|sep(tember)?|oct(ober)?|nov(ember)?|dec(ember)?) *\d{1,2}(th|nd|st|rd){0,1}/; const commaSeperated = new RegExp(weekdayRegex.source + " *,{0,1} *" + monthThenDayRegex.source); expect(commaSeperated.test(text)).toEqual(true); expect(text.match(commaSeperated)[0]).toEqual('monday, january 8'); expect(text .match(commaSeperated)[0] .match(monthThenDayRegex)[0]).toEqual('january 8'); 元素手动选择它。

<input type="file">
function readInputFile(event) {
  let file = event.target.files[0];

  if (!file) {
    return;
  }
  
  let reader = new FileReader();
  
  reader.addEventListener('load', event => {
    let content = event.target.result;
    alert(content);
  });
  
  reader.readAsText(file);
}

document.getElementById('datafile').addEventListener('change', readInputFile, false);

答案 1 :(得分:0)

在这种情况下,我认为您可能会对“本地”文件感到困惑。

本地文件将加载诸如file://之类的网址,或者从以表格形式输入的文件中选择。

.html和.css旁边的文件不是本地文件,它是Web服务器上用于托管.html的托管文件。您将使用指向您域的相对路径来引用它,例如'/file.css'

Node将具有更多选择,因为它可以与fs(文件系统)库中的同步读取和访问本地文件。

您需要做的是像对待Internet上的其他文件一样对待文件,然后以相同的方式下载文件。然后,稍后在需要检查更新时再次下载。重复。