我正在尝试使用electronic / node.js编写一个拴系射击应用程序。
照相机和计算机之间的通信由照相机附带的软件管理。新图片直接复制到我的本地硬盘上。之后,我的应用应尽快显示新图片。
我为新照片到达的目录设置了一个chokidar监视程序。不幸的是
awaitWriteFinish: {stabilityThreshold: 500, pollInterval: 50}
chokidar的选择动作非常缓慢,有时会过早触发添加事件。
我想解决这个问题的想法是在观察者(没有awaitWriteFinish选项)触发事件之后编写我自己的轮询机制。
我尝试使用fs.stats进行轮询,但fs.stats无法识别当前文件大小,但无法识别总文件大小。
是否有一种简便的node.js / javascript / jquery方法来检测新文件是否已完全写入磁盘?
感谢任何帮助。
答案 0 :(得分:-1)
我将使用这种手动方法。
fs.writeSync()
notifyWhateverEnpoint('writing is finished!') // depending on your app, you should choose how to notify it about finishing
答案 1 :(得分:-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