javascript - 是否正在复制文件

标签 javascript node.js file file-io fs

我有一个 Node.js 程序,它定期循环浏览目录中的视频文件。如果添加或删除文件,程序会更新数据库以反射(reflect)此更改。添加文件时,使用 FFmpeg 生成缩略图。

当我尝试在当前正在复制到目录的文件上运行 FFmpeg 时遇到问题。由于文件不完整,FFmpeg无法生成缩略图。如果我知道文件何时被复制,我可以忽略它,并且下次扫描目录时会拾取该文件。

如何确定当前是否正在复制文件,或者如何循环忽略当前复制文件的目录?

最佳答案

假设您有两个进程,一个用于写入文件,另一个对写入的文件进行操作:

  1. 将文件写入临时文件名 (/tmp/filename)
  2. 复制完成后,立即将其链接到您的目标目录。

使用此策略,您的缩略图进程会监视目标目录的更改,现在可以保证目标目录仅包含完整的文件。

参见fs.watch它允许您“观察”目录的更改。

关于javascript - 是否正在复制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43306876/

相关文章:

node.js - NodeJS - 从哪个 Node 版本 Object.fromEntries() 可用?

node.js - selenium-webdriver 的执行顺序(对于 Node JS)

python - 如何更正文件扩展名?

javascript 警报显示代码而不是字符串

javascript - 从历史中弹出最后一个状态

javascript - 在 Electron 中使用.net dll

c - 在 Visual 项目中包含一个文件以便使用它

java - 二维数组或文件中线的处理范围

javascript - 手动删除值后无法通过 JS 设置输入值(Chrome 和 FF)

javascript - 使用 javascript 的元素大小 - 在过滤 JSON 数据时需要重新计算高度