Nodejs如何复制文件

 更新时间:2016年03月09日 15:43:01   作者:彼岸花在开   我要评论
这篇文章主要为大家详细介绍了Nodejs如何复制文件的过程,感兴趣的小伙伴们可以参考一下

前端童鞋都知道,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结果如下:

注意事项:

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();

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

相关文章

  • node基于puppeteer模拟登录抓取页面的实现

    node基于puppeteer模拟登录抓取页面的实现

    本篇文章主要介绍了node基于puppeteer模拟登录抓取页面的实现,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-05-05
  • express.js中间件说明详解

    express.js中间件说明详解

    这篇文章主要介绍了express.js中间件说明详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • NodeJS中的MongoDB快速入门详细教程

    NodeJS中的MongoDB快速入门详细教程

    MongoDB 是一个基于分布式文件存储的数据库,由 C++ 语言编写。这篇文章主要介绍了NodeJS中的MongoDB快速入门详细教程的相关资料,需要的朋友可以参考下
    2016-11-11
  • node.js平台下的mysql数据库配置及连接

    node.js平台下的mysql数据库配置及连接

    本文主要介绍了node.js平台下的mysql数据库配置及连接的相关知识。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-03-03
  • node.js cookie-parser 中间件介绍

    node.js cookie-parser 中间件介绍

    这篇文章主要介绍node.js cookie-parser 中间件,讲解的比较详细,需要的朋友可以参考下。
    2016-06-06
  • node.js中的fs.readlinkSync方法使用说明

    node.js中的fs.readlinkSync方法使用说明

    这篇文章主要介绍了node.js中的fs.readlinkSync方法使用说明,本文介绍了fs.readlinkSync方法说明、语法、接收参数、使用实例和实现源码,需要的朋友可以参考下
    2014-12-12
  • node.js使用redis储存session的方法

    node.js使用redis储存session的方法

    这篇文章主要介绍了node.js使用redis储存session的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-09-09
  • Nodejs关于gzip/deflate压缩详解

    Nodejs关于gzip/deflate压缩详解

    本文主要向大家介绍了nodejs中关于gzip/deflate压缩的2种方法,分别是管道压缩和非管道压缩,十分详细,并附带示例,这里推荐给大家参考下。
    2015-03-03
  • 使用nodejs下载风景壁纸

    使用nodejs下载风景壁纸

    本文主要介绍了使用nodejs下载风景壁纸的方法。具有一定的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • 浅谈node中的exports与module.exports的关系

    浅谈node中的exports与module.exports的关系

    本篇文章主要介绍了浅谈node中的exports与module.exports的关系,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08

最新评论