Nodejs如何复制文件


Posted in NodeJs onMarch 09, 2016

前端童鞋都知道,javascript是没有权限操作磁盘文件的,server童鞋一向都很鄙视。但是nodejs可谓让咱们前端扬眉吐气啊,最近在学node,其强大的功能让人异常激动和兴奋。今天就学习了它怎么读写文件。

首先需要引入fs模块,这是nodejs自带的。

var fs=require("fs");
具体可参考Nodejs API:http://www.w3cfuns.com/tools.php?mod=booknodejs

主要用到了两个方法:

1、fs.readFile(filename, [encoding], [callback])

这是异步读取文件,filename是文件路径,encoding是编码格式,callback是回调函数。

异步读取一个文件的所有内容,例子如下:

fs.readFile('/etc/passwd', function (err, data) {
 if (err) throw err;
 console.log(data);
});

这里我使用的是本地测试文件:

function readFile(){
  console.log('--------开始读取文件--------');
  var fs = require('fs');
  fs.readFile('test.txt', 'utf-8', function(err, data) {
    if (err) {
      console.log("读取失败");
    } else {
      console.log(data);
      return data;
    }
  });
  console.log('--------读取结束--------');
}

2、fs.writeFile(filename, data, encoding='utf8', [callback])
写文件:

function writeFile(data){
  fs.writeFile("test2.txt",data,function(error){
    if(error){
      throw error;
    }else{
      console.log("文件已保存");  
    }
  });
}

错误代码:copyFile.js文件

var fs=require("fs");
function readFile(){
  console.log('--------开始读取文件--------');
  var fs = require('fs');
  fs.readFile('test.txt', 'utf-8', function(err, data) {
    if (err) {
      console.log("读取失败");
    } else {
      console.log(data);
      return data;
    }
  });
  console.log('--------读取结束--------');
}

function writeFile(data){
  fs.writeFile("test2.txt",data,function(error){
    if(error){
      throw error;
    }else{
      console.log("文件已保存");  
    }
  });
}
function copyFile(){
  var txt=readFile();
  writeFile(txt);
}
copyFile();

在终端运行node copyFile.js结果如下:

Nodejs如何复制文件

注意事项:

1、文件编码,开始的时候我直接在本地新建一个txt文档,读取的时候发现结果始终是aaaaaaa这样的,结果发现用编辑打开是时候里面是乱码,其次,最好带上encoding,否则它会按照buffer读取。

2、同步执行问题。

上面的代码是有问题的,我把读取文件和写入文件方法分开写的,本来是想把test.txt文件中的内容复制到test2.txt,但是读取文件是异步执行的,也就是说谁也不知道它何年马月执行完毕,所以test.txt得到的结果是undefined。

正确的方法应该是读取完毕后执行写入文件:

var fs=require("fs");
function copyFile(){
  console.log('--------开始读取文件--------');
  var fs = require('fs');
  fs.readFile('test.txt', 'utf-8', function(err, data) {
    if (err) {
      console.log("读取失败");
    } else {
      writeFile(data)
      return data;
    }
  });
  console.log('--------读取结束--------');
}

function writeFile(data){
  console.log(data);
  fs.writeFile("test2.txt",data,'utf8',function(error){
    if(error){
      throw error;
    }else{
      console.log("文件已保存");  
    }
  });
}

copyFile();

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

NodeJs 相关文章推荐
nodejs 后缀名判断限制代码
Mar 31 NodeJs
windows系统下简单nodejs安装及环境配置
Jan 08 NodeJs
nodejs分页类代码分享
Jun 17 NodeJs
Nodejs下DNS缓存问题浅析
Nov 16 NodeJs
Nodejs基于LRU算法实现的缓存处理操作示例
Mar 17 NodeJs
NodeJS处理Express中异步错误
Mar 26 NodeJs
深入理解Nodejs Global 模块
Jun 03 NodeJs
详解HTTPS 的原理和 NodeJS 的实现
Jul 04 NodeJs
nodejs中安装ghost出错的原因及解决方法
Oct 23 NodeJs
nodejs基础之常用工具模块util用法分析
Dec 26 NodeJs
关于NodeJS中的循环引用详解
Jul 23 NodeJs
nodejs各种姿势断点调试的方法
Jun 18 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 #NodeJs
nodejs 中模拟实现 emmiter 自定义事件
Feb 22 #NodeJs
nodejs修复ipa处理过的png图片
Feb 17 #NodeJs
Nodejs爬虫进阶教程之异步并发控制
Feb 15 #NodeJs
你一定会收藏的Nodejs代码片段
Feb 04 #NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 #NodeJs
nodejs实现bigpipe异步加载页面方案
Jan 26 #NodeJs
You might like
NOT NULL 和NULL
2007/01/15 PHP
php empty函数判断mysql表单是否为空
2010/04/12 PHP
javascript,jquery闭包概念分析
2010/06/19 Javascript
jQuery的Ajax的自动完成功能控件简要说明
2013/02/22 Javascript
使用js实现关闭js弹出层的窗口
2014/02/10 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
jQuery插件zepto.js简单实现tab切换
2015/06/16 Javascript
jQuery基于扩展简单实现倒计时功能的方法
2016/05/14 Javascript
Vuejs第十一篇组件之slot内容分发实例详解
2016/09/09 Javascript
jquery select2的使用心得(推荐)
2016/12/04 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
Angular 4 指令快速入门教程
2017/06/07 Javascript
JS立即执行的匿名函数用法分析
2019/11/04 Javascript
js实现简单点赞操作
2020/03/17 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
js和jquery判断数据类型的4种方法总结
2020/08/28 jQuery
JavaScript常用进制转换及位运算实例解析
2020/10/14 Javascript
[59:35]DOTA2上海特级锦标赛主赛事日 - 3 败者组第三轮#1COL VS Alliance第二局
2016/03/04 DOTA
[54:53]完美世界DOTA2联赛PWL S2 GXR vs PXG 第二场 11.18
2020/11/18 DOTA
python抓取某汽车网数据解析html存入excel示例
2013/12/04 Python
Python处理XML格式数据的方法详解
2017/03/21 Python
儿童python练习实例
2018/05/27 Python
使用Bazel编译TensorBoard教程
2020/02/15 Python
Django中和时区相关的安全问题详解
2020/10/12 Python
Application Cache未缓存文件无法访问无法加载问题
2014/05/31 HTML / CSS
html5+css3气泡组件的实现
2014/11/21 HTML / CSS
美国面料纺织品商城:Fabric.com
2017/06/28 全球购物
意大利巧克力店:Chocolate Shop
2019/07/24 全球购物
社会体育专业大学生职业生涯规划书
2014/09/17 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
论群众路线学习笔记
2014/11/06 职场文书
卫生院艾滋病宣传活动总结
2015/05/09 职场文书
乡镇党建工作总结2015
2015/05/19 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
nginx容器方式反向代理实战
2022/04/18 Servers
Spring IOC容器Bean的作用域及生命周期实例
2022/05/30 Java/Android