手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >在Node.js中实现文件复制的方法和实例
在Node.js中实现文件复制的方法和实例
摘要:Node.js本身并没有提供直接复制文件的API,如果想用Node.js复制文件或目录,需要借助其他的API来实现。复制单个的文件可以直接用...

Node.js 本身并没有提供直接复制文件的 API,如果想用 Node.js 复制文件或目录,需要借助其他的 API 来实现。复制单个的文件可以直接用 readFile、writeFile,这样比较简便。如果是复制一个目录下的所有文件,目录下可能还包含了子目录,那么此时就需要用到更高级点的 API 了。

流是 Node.js 移动数据的方式,Node.js 中的流是可读/可写的,HTTP 和文件系统模块都有用到流。在文件系统中,使用流来读取文件的时候,对于一个大文件可能并不会一次性读取完,而是会分好几次读取完,读取的时候会响应数据事件,在文件没读取完的时候就可以对读取的数据进行操作。同理,在写入流的时候也和读取时一样,大文件并不会一次性写入。这种移动数据的方式是非常高效的,尤其是对于大文件而言,使用流比等待将大文件全部读取完再来操作文件要快得多。

管道

如果想在读取流和写入流的时候做完全的控制,可以使用数据事件。但对于单纯的文件复制来说读取流和写入流可以通过管道来传输数据。

实际应用:

复制代码 代码如下:

var fs = require( 'fs' ),

stat = fs.stat;

/*

* 复制目录中的所有文件包括子目录

* @param{ String } 需要复制的目录

* @param{ String } 复制到指定的目录

*/

var copy = function( src, dst ){

// 读取目录中的所有文件/目录

fs.readdir( src, function( err, paths ){

if( err ){

throw err;

}

paths.forEach(function( path ){

var _src = src + '/' + path,

_dst = dst + '/' + path,

readable, writable;

stat( _src, function( err, st ){

if( err ){

throw err;

}

// 判断是否为文件

if( st.isFile() ){

// 创建读取流

readable = fs.createReadStream( _src );

// 创建写入流

writable = fs.createWriteStream( _dst );

// 通过管道来传输流

readable.pipe( writable );

}

// 如果是目录则递归调用自身

else if( st.isDirectory() ){

exists( _src, _dst, copy );

}

});

});

});

};

// 在复制目录前需要判断该目录是否存在,不存在需要先创建目录

var exists = function( src, dst, callback ){

fs.exists( dst, function( exists ){

// 已存在

if( exists ){

callback( src, dst );

}

// 不存在

else{

fs.mkdir( dst, function(){

callback( src, dst );

});

}

});

};

// 复制目录

exists( './src', './build', copy );

【在Node.js中实现文件复制的方法和实例】相关文章:

jQuery实现表格行上移下移和置顶的方法

jQuery实现自动滚动到页面顶端的方法

Node.js中JavaScript操作MySQL的常用方法整理

JavaScript数组去重的3种方法和代码实例

jQuery仿gmail实现fixed布局的方法

Node.js实现JS文件合并小工具

JavaScript实现鼠标滑过处生成气泡的方法

Node.js本地文件操作之文件拷贝与目录遍历的方法

Node.js重新刷新session过期时间的方法

jQuery实现文本展开收缩特效

精品推荐
分类导航