热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:node.js拷贝文件

篇首语:本文由编程笔记#小编为大家整理,主要介绍了node.js拷贝文件相关的知识,希望对你有一定的参考价值。Node.js提供了文件操作的api,但没有直接

篇首语:本文由编程笔记#小编为大家整理,主要介绍了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


推荐阅读
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • Node.js学习笔记(一)package.json及cnpm
    本文介绍了Node.js中包的概念,以及如何使用包来统一管理具有相互依赖关系的模块。同时还介绍了NPM(Node Package Manager)的基本介绍和使用方法,以及如何通过NPM下载第三方模块。 ... [详细]
  • 本文讨论了在使用PHP cURL发送POST请求时,请求体在node.js中没有定义的问题。作者尝试了多种解决方案,但仍然无法解决该问题。同时提供了当前PHP代码示例。 ... [详细]
  • 这篇“Webpack是怎么工作的”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大 ... [详细]
  • 使用nodejs爬取b站番剧数据,计算最佳追番推荐
    本文介绍了如何使用nodejs爬取b站番剧数据,并通过计算得出最佳追番推荐。通过调用相关接口获取番剧数据和评分数据,以及使用相应的算法进行计算。该方法可以帮助用户找到适合自己的番剧进行观看。 ... [详细]
  • 本文总结了在开发中使用gulp时的一些技巧,包括如何使用gulp.dest自动创建目录、如何使用gulp.src复制具名路径的文件以及保留文件夹路径的方法等。同时介绍了使用base选项和通配符来保留文件夹路径的技巧,并提到了解决带文件夹的复制问题的方法,即使用gulp-flatten插件。 ... [详细]
  • VueCLI多页分目录打包的步骤记录
    本文介绍了使用VueCLI进行多页分目录打包的步骤,包括页面目录结构、安装依赖、获取Vue CLI需要的多页对象等内容。同时还提供了自定义不同模块页面标题的方法。 ... [详细]
  • 从零基础到精通的前台学习路线
    随着互联网的发展,前台开发工程师成为市场上非常抢手的人才。本文介绍了从零基础到精通前台开发的学习路线,包括学习HTML、CSS、JavaScript等基础知识和常用工具的使用。通过循序渐进的学习,可以掌握前台开发的基本技能,并有能力找到一份月薪8000以上的工作。 ... [详细]
  • node.jsrequire和ES6导入导出的区别原 ... [详细]
  • java实现rstp格式转换使用ffmpeg实现linux命令第一步安装node.js和ffmpeg第二步搭建node.js启动websocket接收服务
    java实现rstp格式转换使用ffmpeg实现linux命令第一步安装node.js和ffmpeg第二步搭建node.js启动websocket接收服务第三步java实现 ... [详细]
  • Node.js详细安装及环境配置
    1、下载安装根据自己电脑系统及位数选择,我这里选择windows64位.msi格式安装包(官网:https:odejs.orgzh-cndownload).msi和.zip格式区别 ... [详细]
  • 前端简史之纵横:Node东出
    引💡Ajax的出现,带来了jQuery时代,而jQuery时代也伴随着Node风暴淡淡退出了历史舞台。如果说Ajax给前端带来了从网页静 ... [详细]
  • 本文介绍了使用FormData对象上传文件同时附带其他参数的方法。通过创建一个表单,将文件和参数添加到FormData对象中,然后使用ajax发送POST请求进行文件上传。在发送请求时,需要设置processData为false,告诉jquery不要处理发送的数据;同时设置contentType为false,告诉jquery不要设置content-Type请求头。 ... [详细]
  • node.js中需要遍历数组并返回值的处理实在是搞不懂了... ... [详细]
  • 安装npm  vue脚手架搭建vue项目
    vue安装最全步骤、脚手架搭建环境1.首先查看是否安装node.js因为整个vue环境里边的npm是基于node的.查看方式是在命令窗口中查看版本快捷键windowR输入nod ... [详细]
author-avatar
balamark_466
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有