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

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

相关文章

  • nodejs实现的连接MySQL数据库功能示例

    nodejs实现的连接MySQL数据库功能示例

    这篇文章主要介绍了nodejs实现的连接MySQL数据库功能,结合实例形式分析了nodejs连接及查询mysql数据的相关操作步骤与实现技巧,需要的朋友可以参考下
    2018-01-01
  • 使用puppeteer爬取网站并抓出404无效链接

    使用puppeteer爬取网站并抓出404无效链接

    自动化技术可以帮助我们做自动化测试,本篇文章主要介绍了使用puppeteer爬取网站并抓出404无效链接,可以检查出无效链接,需要的朋友们下面随着小编来一起学习学习吧
    2018-12-12
  • nodejs根据ip数组在百度地图中进行定位

    nodejs根据ip数组在百度地图中进行定位

    本文主要介绍了nodejs根据ip数组在百度地图中进行定位的方法,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • nodejs npm package.json中文文档

    nodejs npm package.json中文文档

    这篇文章主要介绍了nodejs npm package.json中文文档,本文档中描述的很多行为都受npm-config(7)的影响,需要的朋友可以参考下
    2014-09-09
  • NodeJs之word文件生成与解析的实现代码

    NodeJs之word文件生成与解析的实现代码

    这篇文章主要介绍了NodeJs之word文件生成与解析的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • node.js中事件触发器events的使用方法实例分析

    node.js中事件触发器events的使用方法实例分析

    这篇文章主要介绍了node.js中事件触发器events的使用方法,结合实例形式分析了node.js事件触发器events的功能、原理及基本使用方法,需要的朋友可以参考下
    2019-11-11
  • 关于node使用multer进行文件的上传与下载

    关于node使用multer进行文件的上传与下载

    这篇文章主要介绍了关于node使用multer进行文件的上传与下载,Multer是一个Node.js中间件,用于处理表单数据中的multipart/form-data类型,需要的朋友可以参考下
    2023-04-04
  • 使用Make构建Node.js网站项目

    使用Make构建Node.js网站项目

    这篇文章介绍了使用Make构建Node.js网站项目的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-01-01
  • 使用Node.js创建本地HTTP服务器并实现异地远程访问的方法

    使用Node.js创建本地HTTP服务器并实现异地远程访问的方法

    Node.js 是能够在服务器端运行 JavaScript 的开放源代码、跨平台运行环境,这篇文章主要介绍了如何使用Node.js快速创建本地HTTP服务器并实现异地远程访问,需要的朋友可以参考下
    2024-01-01
  • nodejs实现获取某宝商品分类

    nodejs实现获取某宝商品分类

    这篇文章主要介绍了nodejs实现获取某宝商品分类,十分的简单实用,进入后台直接打开控制台,把代码粘进去运行就OK了,有需要的小伙伴可以参考下。
    2015-05-05

最新评论