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中的process进程
Mar 19 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
详解nodejs微信公众号开发——6.自定义菜单
Apr 13 NodeJs
nodejs处理图片的中间件node-images详解
May 08 NodeJs
Windows下快速搭建NodeJS本地服务器的步骤
Aug 09 NodeJs
NodeJS设计模式总结【单例模式,适配器模式,装饰模式,观察者模式】
Sep 06 NodeJs
nodejs连接mysql数据库及基本知识点详解
Mar 20 NodeJs
nodejs更新package.json中的dependencies依赖到最新版本的方法
Oct 10 NodeJs
nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法
Nov 01 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
详解nodejs内置模块
May 06 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脚本数据库功能详解(上)
2006/10/09 PHP
基于mysql的论坛(6)
2006/10/09 PHP
thinkphp表单上传文件并将文件路径保存到数据库中
2016/07/28 PHP
PHP 应用容器化以及部署方法
2018/02/12 PHP
javascript 简单抽屉效果的实现代码
2010/03/09 Javascript
一个简单的网站访问JS计数器 刷新1次加1次访问
2012/09/20 Javascript
JS 毫秒转时间示例代码
2013/09/22 Javascript
js简单实现删除记录时的提示效果
2013/12/05 Javascript
jQuery实现鼠标划过修改样式的方法
2015/04/14 Javascript
JQuery创建DOM节点的方法
2015/06/11 Javascript
JavaScript实现添加及删除事件的方法小结
2015/08/04 Javascript
javascript 用函数实现继承详解
2016/05/28 Javascript
JS 验证密码 不能为空,必须含有数字、字母、特殊字符,长度在8-12位
2017/06/21 Javascript
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
jQuery实现点击下拉框中的值累加到文本框中的方法示例
2017/10/28 jQuery
Vue组件创建和传值的方法
2018/08/17 Javascript
Vue.js组件间通信方式总结【推荐】
2018/11/23 Javascript
koa2使用ejs和nunjucks作为模板引擎的使用
2018/11/27 Javascript
微信小程序实现滑动翻页效果(完整代码)
2019/12/06 Javascript
vue 公共列表选择组件,引用Vant-UI的样式方式
2020/11/02 Javascript
基于Python的身份证号码自动生成程序
2014/08/15 Python
python分析网页上所有超链接的方法
2015/05/08 Python
python调用百度地图WEB服务API获取地点对应坐标值
2019/01/16 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
使用OpenCV对车道进行实时检测的实现示例代码
2020/06/19 Python
python 动态渲染 mysql 配置文件的示例
2020/11/20 Python
日本卡普空电视游戏软件公司官方购物网站:e-CAPCOM
2018/07/17 全球购物
新加坡鲜花速递/新加坡网上花店:Ferns N Petals
2020/08/29 全球购物
SQL Server 2000数据库的文件有哪些,分别进行描述
2013/03/30 面试题
毕业自我评价范文
2013/11/17 职场文书
美丽乡村建设实施方案
2014/03/23 职场文书
入党自我鉴定
2014/03/25 职场文书
安全口号大全
2014/06/21 职场文书
秋冬农业生产标语
2014/10/09 职场文书
Django cookie和session的应用场景及如何使用
2021/04/29 Python
如何开启Apache,Nginx和IIS服务器的GZIP压缩功能
2022/04/29 Servers