Nodejs实现多文件夹文件同步

本文实例为大家分享了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大牛指点。

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

(0)

相关推荐

  • Node.js 使用递归实现遍历文件夹中所有文件

    如标题所示,遍历文件夹下的所有文件,主要功能如下: 传入一个路径,读取路径里面所有的文件 遍历读取的文件,判断当前文件是文件还是文件夹 当前目录为文件,打印出当前文件绝对路径 当前目录为文件夹,获取文件夹路径,继续读取路径下文件 遍历完目录中的所有文件为止 代码中用到的几个方法 path.resolve(path) 一个路径或路径片段解析成一个绝对路径,返回解析后的路径字符串 fs.readdir(path[,option],callback) 读取目录下面的文件,返回目录下的文件列表对象,如果

  • 对node通过fs模块判断文件是否是文件夹的实例讲解

    通过fs.Stats 和 states.isDirectory实现 1. fs.Stats 对象提供了一个文件的信息. 从 fs.stat().fs.lstat() 和 fs.fstat() 及其同步版本返回的对象都是该类型. 如果传入这些函数的 options 中的 bigint 为 true,则数值会是 bigint 型而不是 number 型. 如: Stats { dev: 2114, ino: 48064969, mode: 33188, nlink: 1, uid: 85, gid:

  • nodejs实现获取本地文件夹下图片信息功能示例

    本文实例讲述了nodejs实现获取本地文件夹下图片信息功能.分享给大家供大家参考,具体如下: 新建一个file.js 项目目录如下 //获取项目工程里的图片 var fs = require('fs');//引用文件系统模块 var image = require("imageinfo"); //引用imageinfo模块 function readFileList(path, filesList) { var files = fs.readdirSync(path); files.f

  • Node.js 去掉种子(torrent)文件里的邪恶信息

    2012 年,一部名为 ABS-130 的日本影片引起了网络的震动,网络上纷纷出现了 "当初求种像条狗,如今*完嫌人丑"的现象,成为了 2012 年互联网的一件大事件. 2014年,净网行动如火如荼地进行,各大互联网公司都作出了表率,一时之间XX云.X雷都把万恶的种子拒之门外.净网行动万岁!!(还我苍老师!!) 各大网盘.下载应用都从种子当中提取关键信息,将种子拒之门外.这些关键信息究竟藏在哪里?让我们一探究竟. 种子文件结构 以下内容来自维基百科 .torrent种子文件本质上是文本

  • node.js中fs文件系统目录操作与文件信息操作

    目录操作 如果存在该目录,就创建失败 同步创建目录fs.mkdirSync(path, [mode]) const fs = require('fs'); let mkdir = './mkdir'; fs.mkdir(mkdir, (err) => { if (err) { console.log(`mkdir ${mkdir} file failed~`); } else { console.log(`mkdir ${mkdir} file success~`); } }); 读取目录 如果

  • Node.js查找当前目录下文件夹实例代码

    整理文档,搜刮出Node.js查找当前目录下文件夹实例代码,稍微整理精简一下做下分享. var http = require("http"); var fs = require("fs"); var server = http.createServer(function (req,res) { //不处理收藏夹小图标 if(req.url == "/favicon.ico"){ return; } //files是文件名的数组 表示text这个文

  • nodejs实现遍历文件夹并统计文件大小

    离开公司已经有2个多个月,之前写了不少工具,但在离开公司的当天,我亲手把一年来的所有积累工具和代码都格式化了.今天想起之前在项目中遇到的一个问题,今天将其记录下来. 我在优化内存的时候,遇到一些图片在加载的时候很难loading出现,发现一些技能图标,尺寸很小50x50,但是图片的大小却很大,有几m,于是找到路径,发现是美术输出图标的时候因为忘记压缩导致图标变得很大,所以导致加载出现不停loading现象出现. 项目里美术文件也有几千张那么多,要一张张去找问题还真是一个体力活,当时利用空闲的时间

  • Node.js 文件夹目录结构创建实例代码

    第一次接触NodeJS的文件系统就被它的异步的响应给搞晕了,后来发现NodeJS判断文件夹是否存在和创建文件夹是还有同步方法的,但是还是想尝试使用异步的方法去实现. 使用的方法: fs.exists(path, callback); fs.mkdir(path, [mode], callback); 实现文件夹目录结构的创建代码实现如下: //创建文件夹 function mkdir(pos, dirArray,_callback){ var len = dirArray.length; con

  • 利用node 判断打开的是文件 还是 文件夹的实例

    如下所示: var fs = require("fs"); //判断打开的是文件 还是 文件夹 var path = "wen.txt"; fs.stat(path,function(err,stat){ if (err) { console.error(err); throw err; } console.log(stat); console.info(path+"是一个"+stat.isFile()); console.info(path+&

  • Node.JS 循环递归复制文件夹目录及其子文件夹下的所有文件

    实现代码一: var fs = require('fs') var path = require('path') var copyFile = function(srcPath, tarPath, cb) { var rs = fs.createReadStream(srcPath) rs.on('error', function(err) { if (err) { console.log('read error', srcPath) } cb && cb(err) }) var ws =

  • nodejs遍历文件夹下并操作HTML/CSS/JS/PNG/JPG的方法

    需求描述,由于工作的需要,需要将原本用于1280720的网页改为19201080的网页(电视端页面).需求可以拆分为两部分,代码部分的修改以及图片的修改.在代码部分,需要将所有位置以及大小相关的值乘以1.5,图片的尺寸也要放大1.5倍. 首先使用nodejs遍历当前的文件夹: // 遍历所有的文件 var fs = require("fs") var path = require("path") var relativePath = '\\test' // 拿到需要

随机推荐