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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
跟我学Nodejs(一)--- Node.js简介及安装开发环境
May 20 NodeJs
nodejs之请求路由概述
Jul 05 NodeJs
轻松创建nodejs服务器(2):nodejs服务器的构成分析
Dec 18 NodeJs
Nodejs学习笔记之入门篇
Apr 16 NodeJs
nodejs通过phantomjs实现下载网页
May 04 NodeJs
Nodejs初级阶段之express
Nov 23 NodeJs
NodeJs——入门必看攻略
Jun 27 NodeJs
Nodejs进阶:基于express+multer的文件上传实例
Nov 21 NodeJs
NodeJS创建最简单的HTTP服务器
May 15 NodeJs
Nodejs进阶之服务端字符编解码和乱码处理
Sep 04 NodeJs
nodeJs实现基于连接池连接mysql的方法示例
Feb 10 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入门之常量简介和系统常量
2014/05/12 PHP
10个实用的PHP正则表达式汇总
2014/10/23 PHP
php+mysql数据库查询实例
2015/01/21 PHP
PHP之图片上传类实例代码(加了缩略图)
2016/06/30 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
HTML上传控件取消选择
2013/03/06 Javascript
JS获取浏览器版本及名称实现函数
2013/04/02 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
2014/08/11 Javascript
JavaScript实现动画打开半透明提示层的方法
2015/04/21 Javascript
JavaScript精炼之构造函数 Constructor及Constructor属性详解
2015/11/05 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
JS验证逗号隔开可以是中文字母数字
2016/04/22 Javascript
Bootstrap编写一个兼容主流浏览器的受众巨幕式风格页面
2016/07/01 Javascript
如何解决日期函数new Date()浏览器兼容性问题
2019/09/11 Javascript
vue项目强制清除页面缓存的例子
2019/11/06 Javascript
webpack4 optimization使用总结
2019/11/10 Javascript
JS实现烟花爆炸效果
2020/03/10 Javascript
[47:04]EG vs RNG 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/18 DOTA
python实现sublime3的less编译插件示例
2014/04/27 Python
使用Python脚本来控制Windows Azure的简单教程
2015/04/16 Python
Python利用operator模块实现对象的多级排序详解
2017/05/09 Python
python 简单搭建阻塞式单进程,多进程,多线程服务的实例
2017/11/01 Python
Python读取数据集并消除数据中的空行方法
2018/07/12 Python
python爬虫获取新浪新闻教学
2018/12/23 Python
python获取当前文件路径以及父文件路径的方法
2019/07/10 Python
flask/django 动态查询表结构相同表名不同数据的Model实现方法
2019/08/29 Python
python 使用cx-freeze打包程序的实现
2020/03/14 Python
Visual-Click葡萄牙:欧洲领先的在线眼镜商
2020/02/17 全球购物
自考自我鉴定范文
2013/10/30 职场文书
行政主管岗位职责
2013/11/18 职场文书
大学信息公开实施方案
2014/03/09 职场文书
财务部岗位职责范本
2015/04/14 职场文书
信息技术教研组工作总结
2015/08/13 职场文书
学术会议开幕词
2016/03/03 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
MySQL Router实现MySQL的读写分离的方法
2021/05/27 MySQL