node.js检查是否已将新文件复制到磁盘

问题描述 投票:1回答:2

我正在尝试用电子/ node.js写一个系留的射击应用程序。

摄像机和计算机之间的通信由摄像机附带的软件管理。新图片直接复制到我的本地硬盘。之后,我的应用程序应尽快显示新图片。

我为我的新照片到达的目录设置了一个chokidar观察者。不幸的是

awaitWriteFinish: {stabilityThreshold: 500, pollInterval: 50}

chokidar的选项行为非常缓慢,有时会过早触发添加事件。

绕过这个问题的想法是在观察者(没有awaitWriteFinish选项)触发事件后编写我自己的轮询机制。

我尝试使用fs.stats进行轮询,但fs.stats无法识别当前文件大小,但无法识别文件总大小。

是否有一个简单的node.js / javascript / jquery方法来检测新文件是否完全写入磁盘?

任何帮助赞赏。

javascript node.js polling
2个回答
-1
投票

我会用这样的手动方法。

fs.writeSync()

notifyWhateverEnpoint('writing is finished!') // depending on your app, you should choose how to notify it about finishing

-1
投票

我相信你可以在目录中查看更改。也许首先扫描它以获得文件列表。例如,如果您在Windows上的文件和文件保存在C:\ temp上

const fs = require('fs')
const saveDir = 'C\\temp'

let currentFiles = [];

// Read all cuurent files in directory
fs.readdirSync(saveDir, (error, files) =>
{
  currentFiles = files;
});


fs.watch(saveDir, (eventType, fileName) => 
{
  if (currentFiles.includes(fileName))
  {
    return;
  }
  
  // Handle rename event
  
  // Handle change event
  
});

更多信息:

https://nodejs.org/api/fs.html#fs_fs_watch_filename_options_listener

© www.soinside.com 2019 - 2024. All rights reserved.