Nodejs实现多文件夹文件同步


Posted in NodeJs onOctober 17, 2018

本文实例为大家分享了Nodejs实现多文件夹文件同步的具体代码,供大家参考,具体内容如下

package.json

{
 "name": "asyncFile",
 "version": "0.0.1",
 "dependencies":{
 "fs-sync":"",
 "later":""
 }
}

asycnFile.js

var fsSync = require('fs-sync');
var fs = require('fs');
var util = require("util");
var later = require("later");

//需要同步的文件夹路径
var path = {
 "pathOne": "/home/lincoln/testAsync/dirOne/",
 "pathTwo": "/home/lincoln/testAsync/dirTwo/"
};

//需要同步的文件夹名称
var asyncDir = ["img", "music"];

var dirFilesOne;
var dirFilesTwo;

//读取文件夹信息
function readDir(dirName){
 dirFilesOne = fs.readdirSync(path.pathOne + dirName);
 dirFilesTwo = fs.readdirSync(path.pathTwo + dirName);
}

//使用fs-sync模块拷贝文件信息
function useFileCopy(sourcePath,distPath,copyFiles) {
 for(var index in copyFiles){
  fsSync.copy(sourcePath+copyFiles[index],distPath+copyFiles[index])
 }
}

//统计需要同步的文件信息
function needCopyFiles(sourceFiles, distFiles) {
 var needCopyFiles = [];
 for (var index in sourceFiles) {
  if (distFiles.indexOf(sourceFiles[index]) == -1) {
   needCopyFiles.push(sourceFiles[index]);
   console.log("needAsyncFile-->"+sourceFiles[index]);
  }

 }
 return needCopyFiles;
}

//同步文件
function copyFile(dirName) {
 var sourcePath = path.pathOne + dirName +"/";
 var distPath = path.pathTwo + dirName +"/";

 readDir(dirName)
 useFileCopy(sourcePath,distPath,needCopyFiles(dirFilesOne,dirFilesTwo));

 readDir(dirName);
 useFileCopy(distPath,sourcePath,needCopyFiles(dirFilesTwo,dirFilesOne));
}

//for (var index in asyncDir) {
// //console.log(asyncDir[index])
// console.log(new Date() +" 执行同步--->"+asyncDir[index])
// copyFile(asyncDir[index]);
//}

var sched = later.parse.recur().every(10).second(),
 t = later.setInterval(function() {
  for (var index in asyncDir) {
   //console.log(asyncDir[index])
   console.log(new Date() +" 执行同步--->"+asyncDir[index]);
   copyFile(asyncDir[index]);
  }
 }, sched);

代码只是能用,菜鸟写法,等js这块有深入理解了之后,再修改这块的代码,也希望js大牛指点。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
使用nodejs开发cli项目实例
Jun 03 NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 NodeJs
Nodejs中解决cluster模块的多进程如何共享数据问题
Nov 10 NodeJs
Nodejs 发送Post请求功能(发短信验证码例子)
Feb 09 NodeJs
nodejs搭建本地http服务器教程
Mar 13 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
nodejs实现邮件发送服务实例分享
Mar 29 NodeJs
使用 NodeJS+Express 开发服务端的简单介绍
Apr 07 NodeJs
ubuntu编译nodejs所需的软件并安装
Sep 12 NodeJs
详解nodejs解压版安装和配置(带有搭建前端项目脚手架)
Dec 06 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 NodeJs
深入理解NodeJS 多进程和集群
Oct 17 #NodeJs
CentOS7中源码编译安装NodeJS的完整步骤
Oct 13 #NodeJs
NodeJS加密解密及node-rsa加密解密用法详解
Oct 12 #NodeJs
NodeJS使用Range请求实现下载功能的方法示例
Oct 12 #NodeJs
nodejs实现范围请求的实现代码
Oct 12 #NodeJs
NodeJS搭建HTTP服务器的实现步骤
Oct 12 #NodeJs
NodeJS服务器实现gzip压缩的示例代码
Oct 12 #NodeJs
You might like
php内核解析:PHP中的哈希表
2014/01/30 PHP
PHP实现获取客户端IP并获取IP信息
2015/03/17 PHP
PHP经典面试题之设计模式(经常遇到)
2015/10/15 PHP
php版微信发红包接口用法示例
2016/09/23 PHP
PHP集成环境XAMPP的安装与配置
2018/11/13 PHP
php封装的page分页类完整实例代码
2020/02/01 PHP
ASP中Sub和Function的区别说明
2020/08/30 Javascript
js replace 与replaceall实例用法详解
2013/08/03 Javascript
DOM基础教程之事件类型
2015/01/20 Javascript
jquery实现无刷新验证码的简单实例
2016/05/19 Javascript
JS实现间歇滚动的运动效果实例
2016/12/22 Javascript
angularjs+bootstrap实现自定义分页的实例代码
2017/06/19 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
layui 关闭open弹出框 刷新table表格页面的方法
2019/09/16 Javascript
Python中使用语句导入模块或包的机制研究
2015/03/30 Python
python实现Decorator模式实例代码
2018/02/09 Python
Python matplotlib 画图窗口显示到gui或者控制台的实例
2018/05/24 Python
python验证码识别教程之利用滴水算法分割图片
2018/06/05 Python
Django ORM 常用字段与不常用字段汇总
2019/08/09 Python
Python装饰器使用你可能不知道的几种姿势
2019/10/25 Python
如何基于Python代码实现高精度免费OCR工具
2020/06/18 Python
美国嘻哈首饰购物网站:Hip Hop Bling
2016/12/30 全球购物
Superdry极度干燥美国官网:英国制造的服装品牌
2018/11/13 全球购物
MYPROTEIN澳大利亚官方网站:欧洲运动营养品牌
2019/06/26 全球购物
C/C++有关内存的思考题
2015/12/04 面试题
this关键字的作用
2016/01/30 面试题
医药代表个人求职信范本
2013/12/19 职场文书
社团招新策划书
2014/02/04 职场文书
道路建设实施方案
2014/03/18 职场文书
高考寄语大全
2014/04/08 职场文书
《小动物过冬》教学反思
2014/04/17 职场文书
小学作文评语大全
2014/04/21 职场文书
2015夏季作息时间调整通知
2015/04/24 职场文书
驾驶员安全责任协议书
2016/03/22 职场文书
pandas进行数据输入和输出的方法详解
2022/03/23 Python