Node复制文件

  本人开发过程中,经常遇到,要去拷贝模板到当前文件夹,经常要去托文件,为了省事,解决这个问题,写了一个node复制文件。

//流 stream   管道 pipe 管道
//如果想在读取流和写入流的时候做完全的控制,可以使用数据事件。但对于单纯的文件复制来说读取流和写入流可以通过管道来传输数据。
var fs = require("fs");
var path = require("path");
/*
 * 复制目录中的所有文件包括子目录
 * @src param{ String } 需要复制的目录   例 images 或者 ./images/
 * @dst param{ String } 复制到指定的目录    例 images images/
 */

//获取当前目录绝对路径,这里resolve()不传入参数
var filePath = path.resolve();

var copy = function(src,dst){

    //判断文件需要时间,则必须同步
    if(fs.existsSync(src)){
        fs.readdir(src,function(err,files){
            if(err){console.log(err);return;}
            files.forEach(function(filename){

                //url+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“
                var url = path.join(src,filename),
                    dest = path.join(dst,filename);
                    console.log(url);
                    console.log(dest);
                fs.stat(path.join(src,filename),function(err, stats){
                    if (err) throw err;

                     //是文件
                    if(stats.isFile()){

                        //创建读取流
                        readable = fs.createReadStream(url);
                        //创建写入流
                        writable = fs.createWriteStream(dest,{ encoding: "utf8" });
                        // 通过管道来传输流
                        readable.pipe(writable);

                    //如果是目录
                    }else if(stats.isDirectory()){
                        exists( url, dest, copy );
                    }
                });
            });
        });
    }else{
        console.log("给定的目录不存,读取不到文件");
        return;
    }
}

function exists(url,dest,callback){
    fs.exists(dest,function(exists){
        if(exists){
            callback && callback(url,dest);
        }else{
            //第二个参数目录权限 ,默认0777(读写权限)
            fs.mkdir(dest,0777,function(err){
                if (err) throw err;
                callback && callback(url,dest);
            });
        }
    });
}
exports.copy = copy;
//copy("./views/","./www/");
copy("./../jdcase/homeappliances/",filePath);

  

时间: 2024-10-23 01:47:35

Node复制文件的相关文章

node复制文件夹,压缩zip,上传

一:用到的模块和简单介绍 npm文档:request :node请求的模块,可以给用程序请求服务器的接口https://www.npmjs.com/package/requestfs:读写文件的,很常用https://www.npmjs.com/package/fspath:路径,各种给文件夹弄路径什么的https://www.npmjs.com/package/pathjs-cookie:获取cokie的,在请求的时候需要用到https://www.npmjs.com/package/js-c

node 复制文件

1. node 复制小文件 需要引用模块 require( 'fs' ): 使用 writeFileSync 和 readFileSync 复制小文件,大文件时会拖垮内存,不建议使用. 代码 var fs = require( 'fs' ); function copyfile(src,dir) { fs.writeFileSync(dir,fs.readFileSync(src)); } copyfile( 'D:\\from\\config.json', 'D:\\log\\dd.json'

node.js流复制文件

转自:http://segmentfault.com/a/1190000000519006 nodejs的fs模块并没有提供一个copy的方法,但我们可以很容易的实现一个,比如: var source = fs.readFileSync('/path/to/source', {encoding: 'utf8'}); fs.writeFileSync('/path/to/dest', source); 这种方式是把文件内容全部读入内存,然后再写入文件,对于小型的文本文件,这没有多大问题,比如gru

Node.js 文件操作

新建一个文件a.txt,并写入"你好,这是一个新文件.". 代码 demo1.js var fs = require('fs'); console.log(1); //创建文件并写入内容 fs.writeFile('e:/nodeTest/a.txt','这是一个新文件.',function(err) { if(err){ console.log('不好意思,文件写入失败了'); } console.log(2); }); console.log(3); 进入 E:\nodeTest\

Node.JS 文件读写,把Sheet图集转换为龙骨动画图集

Node.JS 文件读写,把Sheet图集数据转换为龙骨动画图集数据 var fs = require("fs") var readline = require("readline"); var rl = readline.createInterface({ input:process.stdin, output:process.stdout }); var path = undefined; var dbName = undefined; rl.question(

php 批量进行复制文件

php 批量进行复制文件 1.前言 目标:php批量进行复制指定的目录文件夹下所有文件复制到另一个文件夹下 所使用的的php函数:is_dir,opendir,readdir,scandir,mkdir,closedir,等等(注:其他文件操作函数也可以完成,这里只列举了本次使用的函数) 2.相关函数介绍 2.1.is_dir 详情参考:https://www.w3cschool.cn/php/func-filesystem-is-dir.html 2.2.opendir 详情参考:https:

[shell实例]——用脚本实现向多台服务器批量复制文件(nmap、scp)

练习环境: (1)所有服务器将防火墙和selinux关闭 (2)所有服务器的root密码设置为aixocm (3)所有服务器都为10.0.100.*网段,并保证能够和其它主机通信 (4)所有服务器确保sshd服务已经启动(开放默认的22端口) 脚本要求实现: 将本机/etc目录下以conf为扩展名的文件打包压缩为tar.bz2,然后将此文件复制一份到10.0.100.1-->10.0.100.254地址段上所有开启的主机,具体路径为/tmp/sjjy/文件.在使用scp复制时无需手动输入密码.

Node.js文件模块fs监视文件变化

Node.js文件模块fs监视文件变化 Node中文件模块fs监视文件的函数源码如下: fs.watch = function(filename) { nullCheck(filename); var watcher; var options; var listener; if (util.isObject(arguments[1])) { options = arguments[1]; listener = arguments[2]; } else { options = {}; listen

工作笔记:复制文件--从windows到ubuntu,再到fedora

最近在测试跨平台类库,于是写了一些小程序. 当然主要利用vs进行主要的代码开发.eclipse进行linux的调试. 那么需要不时同步项目文件. 考虑到项目简单,所以没有使用svn. 1. 从windows同步到ubuntu. IIS建立一个www站点.物理目录指向项目文件所在的目录. 在ubuntu终端下,使用wget 下载需要的源代码. 2. 从ubuntu同步到fedora. 由于在ubuntu下,项目已经编译,所以仅需要复制相关的文件到fedora. 本地创建一个临时目录,通过sshfs