node.js 拷贝文件

Node.js提供了文件操作的api,但没有直接拷贝文件的相关操作。不过可以利用fs模块写个简单的拷贝文件程序。

var fs = require(‘fs‘);

function copy(filename,src) {
    fs.writeFileSync(filename, fs.readFileSync(src));   //filename如果不存在,则会在路径上新建文件
}

function main(argv) {
    copy(argv[0], argv[1]);   //argv[0]为要拷贝的文件名,argv[1]为拷贝数据的来源

}

fs.stat(process.argv.slice(2)[1], function (err, stats) {
 //检验是否为文件
    if(stats.isFile()){
        main(process.argv.slice(2));
    }else{
        console.log(‘invalid file‘);
    }
});

以上程序通过stats类获取文件信息,isFile判断是否为文件,再通过fs.writeFileSync,fs.readFileSync同步写入或读取文件。

process.argv获得命令行参数。然而argv[0],argv[1]为NodeJS执行程序的绝对路径和运行模块的绝对路径,所以argv[2]开始才是输入的参数,可以通过slice()截取参数。

然而这样的方式是将文件内容全部先读取至内存再全部一次性写入至指定路径,如果文件很大,内存则承受不了,所以对于超大文件的拷贝可以用数据流的方式实现,将原程序的copy函数修改一下

function copy(filename,src) {
    fs.createReadStream(src).pipe(fs.createWriteStream(filename));
}

fs.createReadStream创建了一个只读数据流,fs.createWriteStream创建了一个只写数据流,pipe()将两个数据流连接在一起进行传输。

通过数据流读取文件时,会将大文件分多次进行读取,即使文件没读取完也可以对读取的数据进行操作,写入文件也是如此,用这种方式来拷贝数据是十分高效的。

文件操作相关API:http://nodejs.cn/api/fs.html

时间: 2024-11-05 22:33:36

node.js 拷贝文件的相关文章

node.js笔记——文件之间的引入

node.js的基础语法就是JavaScript的语法,所以对于懂得javascript的同学来说要容易一些,至于环境的配置也要相对简单很多,可以访问官方文档进行安装.这里分享一下我在学习中总结的一些东西,这是第一篇先来说说文件之间如何进行引入并互相使用变量及函数. 码缘»node.js笔记——文件之间的引入 http://www.ithome.ren/2017/05/31/node-js1.html

node.js中文件读取方式中流方式

1.node.js中文件读取流方式: var fs=require("fs"); var data; var s1=fs.createReadStream("input.txt"); s1.on("data",function(txt){ data+=txt; }) s1.on("end",function(){ console.log("文件流式读取成功!") }) 2.管道方式: var fs=requ

用node.js读写文件

node.js没有二进制数据类型,却提供了类似字节数组的“流“数据类型,着一种数据类型在文件系统模块中频频出现 node.js打开文件 fs = require('fs'); console.log('准备打开文件'); fs.open('/etc/hosts','r+',function (err,fd) { if (err) { console.log('damn~打开错误'); } console.log('可以打开'); fs.close(fd,function (err) { if (

Node.js读写文件之批量替换图片

问题:文件夹A中有大量图片文件,需要用另外一个图片替换掉A中图片,但是命名保持不变. 手工的做法如下: 1)浏览器打开图片->2)另存为->3)目标文件夹->4)找到一个图片->5)替换->6)确定 然后,重复步骤2)和之后的步骤.不小心会漏掉或重复. 这么麻烦,使用node.js来处理改如何呢?代码如下: 1 var fs=require('fs'), 2 cp=require('child_process'); 3 var url='Moriarty.jpg' 4 var

electron node.js 实现文件拖动读取文件

css/styles.css 1 .for_file_drop { 2 width: 100%; 3 height: 100px; 4 background-color: blueviolet; 5 } index.html 1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 6 <title>Hello World!</title> 7 &

又拍云 Node.js 实现文件上传、删除

Node.js 服务端 使用 Node.js + Express.js 实现 服务端 const express = require("express"); const app = express(); const axios = require('axios'); app.set('port', process.env.PORT || 8082); // 静态资源目录,这里放在了根目录,生产环境不允许这样 app.use(express.static(__dirname)); //

node.js 写文件

异步写文件 node_write.js var http = require('http'); var url = require('url'); var router = require('./router'); http.createServer(function (request, response) { response.writeHead(200, {'Content-Type': 'text/html; charset=utf-8'}); if(request.url!=="/fav

Node.js检查文件是否存在

"use strict"; const fs = require("fs"); //fs.mkdir("test", function (err) { // if(err) throw err; // console.log("创建成功"); //}) //fs.rmdir("test", err => { // if(err) throw err; // console.log("删除成功

node.js 读取文件--createReadStream

createReadStream 是fs模块里面读流的一个方法 这个方法基于fs模块的,所以我们先要引进fs模块 let fs=require("fs"); createReadStream 读取文件,有两个参数 第一个参数,读取文件的路径 第二个参数 highWaterMark 最高水位线,默认最多读取64K 读取的类容都是buffer类型返回的结果是一个可读流的实例,是非流动模式---我们最后要转为流动模式 先要定义一下我们读流的变量,假设我们有一个1.txt文件,我们要读取1.t