我有两个 Node 线程正在运行,一个负责监视目录以消费文件,另一个负责将文件写入指定的目录。通常它们不会在同一个目录上操作,但是在我正在处理的边缘情况下,它们会在同一个目录上操作。看起来消费应用程序正在在文件完全写入之前获取这些文件,导致文件损坏。是否有一种方法可以锁定文件直到写入完成?我已经研究了 lockfile 模块,但不幸的是我不认为它适用于此特定应用程序。
完整代码远不止这里所示,但要点如下: 1. 应用程序启动观察器和监听器 2. 监听器:监听将文件添加到 db,使用 fs.writeFile 导出它。 3. 观察者: - 观察者使用 chokidar 监视每个观察目录中添加的文件。 - 发现后,调用 fs.access 确保我们可以访问该文件。fs.access 看起来似乎不受文件正在被写入的影响。 - 通过 fs.createReadStream 消耗文件,然后将其发送到服务器。我们需要文件哈希值,因此需要文件流。 在这种情况下,文件被导出到观察目录,然后由监视进程重新导入。
完整代码远不止这里所示,但要点如下: 1. 应用程序启动观察器和监听器 2. 监听器:监听将文件添加到 db,使用 fs.writeFile 导出它。 3. 观察者: - 观察者使用 chokidar 监视每个观察目录中添加的文件。 - 发现后,调用 fs.access 确保我们可以访问该文件。fs.access 看起来似乎不受文件正在被写入的影响。 - 通过 fs.createReadStream 消耗文件,然后将其发送到服务器。我们需要文件哈希值,因此需要文件流。 在这种情况下,文件被导出到观察目录,然后由监视进程重新导入。