Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 正在复制文件吗_Javascript_Node.js_File_File Io_Fs - Fatal编程技术网

Javascript 正在复制文件吗

Javascript 正在复制文件吗,javascript,node.js,file,file-io,fs,Javascript,Node.js,File,File Io,Fs,我有一个Node.js程序,它定期循环浏览目录中的视频文件。如果添加或删除文件,程序将更新数据库以反映此更改。添加文件时,FFmpeg用于生成缩略图 当我尝试对当前正在复制到目录的文件运行FFmpeg时,我遇到了问题。由于文件不完整,FFmpeg无法生成缩略图。如果我知道文件何时被复制,我可以忽略它,下次扫描目录时它会被提取 如何确定当前是否正在复制文件,或者如何循环忽略当前复制文件的目录?找到文件后,以字节为单位计算当前大小,然后在1秒后检查文件,并检查文件大小是否仍然相同。如果不是,则表示文

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

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


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

找到文件后,以字节为单位计算当前大小,然后在1秒后检查文件,并检查文件大小是否仍然相同。如果不是,则表示文件当前正在写入。

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

  • 将文件写入临时文件名(/tmp/filename)
  • 复制完成后,立即将其链接到目标目录
  • 使用此策略,您的缩略图进程将监视目标目录的更改,现在可以保证目标目录只包含完整的文件


    查看哪个允许您“监视”目录的更改。

    我想这在大多数情况下都会起作用,但我经常注意到我的文件传输需要几秒钟才能开始,有时会冻结几秒钟,这会导致一些误报。因为您使用的是node.js,您可以同时对多个文件执行此操作。您可以将检查间隔增加到例如10秒,或增加检查量。我相信这是唯一的方法,我不知道任何操作系统中的任何功能都能满足您的需要。您是否也考虑过“如果文件被复制,那么它是否完整正确”?你打算怎么解决这个问题?您可以控制文件传输过程吗?@andre当用户复制文件或将文件拖动到目录中时。希望操作系统能够成功地复制文件。如果文件以某种方式损坏,程序将退出并出错。