当前位置: 首页 > 面试题库 >

使用node.js监视文件夹中的更改,并在更改时打印文件路径

韦嘉颖
2023-03-14
问题内容

我正在尝试编写一个node.js脚本,该脚本监视文件目录中的更改,然后打印更改的文件。如何修改此脚本,以便它监视目录(而不是单个文件),并在更改文件时显示目录中的文件名?

var fs = require('fs'),
    sys = require('sys');
var file = '/home/anderson/Desktop/fractal.png'; //this watches a file, but I want to watch a directory instead
fs.watchFile(file, function(curr, prev) {
    alert("File was modified."); //is there some way to print the names of the files in the directory as they are modified?
});

问题答案:

试试Chokidar:

var chokidar = require('chokidar');

var watcher = chokidar.watch('file or dir', {ignored: /^\./, persistent: true});

watcher
  .on('add', function(path) {console.log('File', path, 'has been added');})
  .on('change', function(path) {console.log('File', path, 'has been changed');})
  .on('unlink', function(path) {console.log('File', path, 'has been removed');})
  .on('error', function(error) {console.error('Error happened', error);})

Chokidar仅使用fs即可查看文件,从而解决了一些跨平台问题。



 类似资料:
  • 问题内容: 我有一个看起来像这样的文本文件: 我想使用node.js将每行的开头替换为“ myString”。因此,每个最终看起来像: 我正在尝试使用正则表达式,但是我怀疑可以使用读取和写入流来完成。 哪种正则表达式将起作用,或者使用node编辑此文件的最佳方法是什么? 问题答案: 根据您的需要,这是“同步”或“异步”的两个选项。

  • 问题内容: 我想在文件更改时自动启动构建。 我已经在Ruby中使用了autospec(RSpec),并且喜欢它。 如何在bash中完成? 问题答案: 阅读其他帖子的回复后,我发现了一个帖子(现已消失),我创建了这个脚本:-

  • 问题内容: 如何在Linux中更改.eclipse文件夹?我尝试添加此行: 在eclipse.ini的顶部,但是它不起作用。我也尝试将其添加到eclipse.ini中的其他各个位置,但还是没有运气。 编辑 我添加了这一行: -vmargs的正下方。当Eclipse启动时,它现在从正确的.eclipse位置读取,如果.eclipse不存在,它将创建它。不幸的是,在Eclipse加载之后,在我的主文件

  • 问题内容: 我有以下UseCase: A创建一个聊天并邀请B和C-在服务器A上创建一个文件。A,B和C将消息写入此文件。A,B和C读取了此文件。 我想在服务器上创建一个文件并观察该文件,如果其他人向该文件中写入内容,则将新内容与websockets发送回去。 因此,我的node.js应用程序应观察到此文件的任何更改。 如何观察文件更改? 在不锁定文件的情况下使用节点js可以实现吗? 如果无法使用文

  • 问题内容: 我在这里写的主要是关于从哪里开始的建议。我已经实现了一个类,该类将使用Java的WatchService递归监视目录。它可以很好地检测更改,但是我注意到了一个致命的缺陷:我无法删除包含正在监视的目录的正在监视的目录。这似乎是WatchService的限制。 我还稍微研究了Apache的VFS FileListener,但是在花了大约6个小时的时间来围绕它构建某种包装之前,我想也许我只是

  • 问题内容: 我想更改特定文件夹中文件的扩展名。我在论坛上阅读了有关此主题的信息。使用“确实”的想法,我编写了以下代码,我希望它可以工作,但不能。我很感谢您为我的失误提供任何指导。 问题答案: 在对源文件是不必要的,因为只需要在源和目标路径来完成这项工作。而且,始终返回,因此调用其返回值没有任何意义。 我简单地删除了两个。检查是否适合您。