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中exports与module.exports的区别详细介绍
Jan 14 NodeJs
NodeJS的url截取模块url-extract的使用实例
Nov 18 NodeJs
Nodejs极简入门教程(一):模块机制
Oct 25 NodeJs
nodejs中的fiber(纤程)库详解
Mar 24 NodeJs
nodejs爬虫抓取数据之编码问题
Jul 03 NodeJs
nodejs和php实现图片访问实时处理
Jan 05 NodeJs
Nodejs--post的公式详解
Apr 29 NodeJs
NodeJS实现微信公众号关注后自动回复功能
May 31 NodeJs
详解NODEJS的http实现
Jan 04 NodeJs
Nodejs模块的调用操作实例分析
Dec 25 NodeJs
nodejs分离html文件里面的js和css的方法
Apr 09 NodeJs
nodejs实现用户登录路由功能
May 22 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
php获取某个目录大小的代码
2008/09/10 PHP
php小型企业库存管理系统的设计与实现代码
2011/05/16 PHP
PHP中session跨子域的三种实现方法
2016/07/25 PHP
PHP实现批量检测网站是否能够正常打开的方法
2016/08/23 PHP
PHP严重致命错误处理:php Fatal error: Cannot redeclare class or function
2017/02/05 PHP
php实现的rc4加密解密类定义与用法示例
2018/08/16 PHP
jQuery+PHP实现图片上传并提交功能
2020/07/27 PHP
在jQuery中 常用的选择器介绍
2013/04/16 Javascript
js动态为代码着色显示行号
2013/05/29 Javascript
利用Keydown事件阻止用户输入实现代码
2014/03/11 Javascript
jquery 隐藏与显示tr标签示例代码
2014/06/06 Javascript
jQuery实现的仿百度分页足迹效果代码
2015/10/30 Javascript
jQuery的文档处理程序详解
2016/05/10 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
2016/12/14 Javascript
基于JavaScript实现屏幕滚动效果
2017/01/18 Javascript
vue-router单页面路由
2017/06/17 Javascript
Vue AST源码解析第一篇
2017/07/19 Javascript
JS库之Waypoints的用法详解
2017/09/13 Javascript
JavaScript实现仿Clock ISO时钟
2018/06/29 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
python list中append()与extend()用法分享
2013/03/24 Python
Python书单 不将就
2017/07/11 Python
python3设计模式之简单工厂模式
2017/10/17 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
python requests抓取one推送文字和图片代码实例
2019/11/04 Python
详解从Django Allauth中进行登录改造小结
2019/12/18 Python
Django跨域资源共享问题(推荐)
2020/03/09 Python
房地产销售大学生自我评价分享
2013/11/11 职场文书
测试工程师岗位职责
2013/11/28 职场文书
核心价值观演讲稿
2014/05/13 职场文书
环保小标语
2014/06/13 职场文书
个人授权委托书
2014/09/15 职场文书
文艺有韵味的诗句(生命类、亲情类...)
2019/07/11 职场文书
Nginx 负载均衡是什么以及该如何配置
2021/03/31 Servers
Redis Cluster 字段模糊匹配及删除
2021/05/27 Redis
python数字转对应中文的方法总结
2021/08/02 Python