Nodejs如何复制文件
来源: 阅读:679 次 日期:2016-07-21 15:13:34
温馨提示: 小编为您整理了“Nodejs如何复制文件”,方便广大网友查阅!

这篇文章主要为大家详细介绍了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如何复制文件
由于各方面情况的不断调整与变化, 提供的所有考试信息和咨询回复仅供参考,敬请考生以权威部门公布的正式信息和咨询为准!
关于我们 | 联系我们 | 人才招聘 | 网站声明 | 网站帮助 | 非正式的简要咨询 | 简要咨询须知 | 加入群交流 | 手机站点 | 投诉建议
工业和信息化部备案号:滇ICP备2023014141号-1 云南省教育厅备案号:云教ICP备0901021 滇公网安备53010202001879号 人力资源服务许可证:(云)人服证字(2023)第0102001523号
云南网警备案专用图标
联系电话:0871-65317125(9:00—18:00) 获取招聘考试信息及咨询关注公众号:hfpxwx
咨询QQ:526150442(9:00—18:00)版权所有:
云南网警报警专用图标
Baidu
map