我正在使用电子开发用于Mac和Windows的应用程序,该应用程序监视从另一个应用程序下载的文件所在的文件夹,我想检查文件是否已完成下载,然后再将其移动到其他位置,我不知道是否应该我会定期检查文件大小,或者还有另一种方法来确定文件是否确实使用javascript完成下载。
答案 0 :(得分:1)
您可以使用fs.watch
和@ronomon/opened
来解决您的任务。参见:Check if a file is open in another process
我写了一个简单的脚本,在Windows 10 mashine上运行良好。下载结束后,我将一些文件下载到该文件夹中,并显示了正确的通知。
const fs = require ('fs');
const path = require ("path")
const opened = require('@ronomon/opened');
const base_path = "."
fs.watch (base_path, {encoding: "ascii", recursive: true}, (eventType, filename)=> {
var file_path = path.join (base_path, filename);
opened.files ([file_path], (error, hashtable) => {
try {
if (!hashtable[file_path]) {
console.log ("file is closed and can be further processed", file_path)
} else {
console.log ("file is still opend by any other process...", file_path)
}
} catch (e) {
console.error ("error: ", e);
}
})
});