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

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

(0)

相关推荐

  • node.js实现复制文本到剪切板的功能

    前言 最近在工作中遇到一种需求:我需要请求后端数据,但请求数据前需要登陆,获得一个token.登陆方式是向一个json地址post数据即可.之前我的做法是,用chrome插件postman来实现登陆动作.但后来无意中发现,postman内存占用超高!即使我并没有使用它.这让我很不爽. 后来一想,实现这么简单的一个动作,用这么重的插件,对于我这样一个会nodejs的前端程序员是不是太Low了?简直不好意思对人讲自己会nodejs! 于是我就花了点时间写了个简单的脚本.本文记录一下开发过程. 实现思

  • nodejs调用cmd命令实现复制目录

    工作中一直需要对一些官网进行文件复制,并且替换内部的一些信息,以前都是手动操作的,或者通过自己写的firefox扩展来进行文件操作的. 现在前端有nodejs了,为什么不用nodejs写个一键式的呢~~ 1.复制目录 复制文件的时候,如果直接创建一个不存在的文件目录下就不成功了.要上级目录存在才可以.(nodejs API接触时间不长,如有有误,谢谢指正). 这样在写入文件的时候就检测一下目录是否存在,不存在则判断上级目录,之后一级一级目录创建回来,之后就可以复制文件了 var dirCache

  • Nodejs 复制文件/文件夹的方法

    1.使用fs复制文件 使用fs对象的readFileSync,writeFileSync方法进行读写操作复制 cp.js function copyIt(from, to) { fs.writeFileSync(to, fs.readFileSync(from)); //fs.createReadStream(src).pipe(fs.createWriteStream(dst));大文件复制 } copyIt(from.js,to.js); 这样就可以复制from.js到to.js 2.使用l

  • 在Node.js中实现文件复制的方法和实例

    Node.js 本身并没有提供直接复制文件的 API,如果想用 Node.js 复制文件或目录,需要借助其他的 API 来实现.复制单个的文件可以直接用 readFile.writeFile,这样比较简便.如果是复制一个目录下的所有文件,目录下可能还包含了子目录,那么此时就需要用到更高级点的 API 了. 流 流是 Node.js 移动数据的方式,Node.js 中的流是可读/可写的,HTTP 和文件系统模块都有用到流.在文件系统中,使用流来读取文件的时候,对于一个大文件可能并不会一次性读取完,

  • Node.js复制文件的方法示例

    本文实例讲述了Node.js复制文件的方法.分享给大家供大家参考,具体如下: 本人开发过程中,经常遇到,要去拷贝模板到当前文件夹,经常要去托文件,为了省事,解决这个问题,写了一个node复制文件. // js/app.js:指定确切的文件名. // js/*.js:某个目录所有后缀名为js的文件. // js/**/*.js:某个目录及其所有子目录中的所有后缀名为js的文件. // !js/app.js:除了js/app.js以外的所有文件. // *.+(js|css):匹配项目根目录下,所有

  • Nodejs如何复制文件

    前端童鞋都知道,javascript是没有权限操作磁盘文件的,server童鞋一向都很鄙视.但是nodejs可谓让咱们前端扬眉吐气啊,最近在学node,其强大的功能让人异常激动和兴奋.今天就学习了它怎么读写文件. 首先需要引入fs模块,这是nodejs自带的. var fs=require("fs"); 具体可参考Nodejs API:http://www.w3cfuns.com/tools.php?mod=booknodejs 主要用到了两个方法: 1.fs.readFile(fil

  • nodejs+express实现文件上传下载管理网站

    nodejs+express-实现文件上传下载管理的网站 项目Github地址:https://github.com/qcer/updo 后端:基于nodejs的express的web框架. 前端:bootstrap框架+vuejs.jquery等js库 功能点: dronzone.js实现文件拖拽上传.下载,可自定义传输容量. vuejs实现表格双向数据绑定. jquery.form.min.js表单插件,升级表单,实现表单提交回调. 纯css+jQuery实现一键返回顶部. 简单的ajax异

  • node删除、复制文件或文件夹示例代码

    注意:在win10,v10.16.1 环境运行无问题 首先引入相关包(会在使用处具体说明): const fs = require('fs') const path = require('path') const child_process = require('child_process') const fsEx = require('fs-extra') /** * @des 该包为实验性API */ const fsPromises = require('fs').promises 对文件

  • Xcopy 复制文件和目录,包括子目录。

    Xcopy 复制文件和目录,包括子目录. 语法 xcopy Source [Destination] [/w] [/p] [/c] [/v] [/q] [/f] [/l] [/g] [/d[:mm-dd-yyyy]] [/u] [/i] [/s [/e]] [/t] [/k] [/r] [/h] [{/a|/m}] [/n] [/o] [/x] [/exclude:file1[+[file2]][+[file3]] [{/y|/-y}] [/z] 参数 Source  必需的.指定要复制的文件的

  • php简单复制文件的方法

    本文实例讲述了php简单复制文件的方法.分享给大家供大家参考,具体如下: <?php /** *author:果冻 *qq:52091199 *wyg517.blog.163.com **/ $file = 'image/a1.jpg'; $newfile = 'a/123.jpg'; //必须有写入权限 if (file_exists($file) == false) { die ('文件不在,无法复制'); } $result = copy($file, $newfile); if ($re

  • VB实现的递归复制文件和搜索文件的代码分享

    在程序中要做一个复制文件夹的功能,用递归写起来很方便.后来要某位仁兄(自己知道就行了 - -)实现一个类似的,貌似不是那么顺利,这里把复制文件夹的递归代码丢出来: Public Shared Sub CopyDirectory(source As String, destination As String) If Directory.Exists(destination) = False Then Try Directory.CreateDirectory(destination) Catch

  • ASP FSO文件操作函数代码(复制文件、重命名文件、删除文件、替换字符串)

    FSO文件(File)对象属性 DateCreated 返回该文件夹的创建日期和时间 DateLastAccessed 返回最后一次访问该文件的日期和时间 DateLastModified 返回最后一次修改该文件的日期和时间 Drive 返回该文件所在的驱动器的Drive对象 Name 设定或返回文件的名字 ParentFolder 返回该文件的父文件夹的Folder对象 Path 返回文件的绝对路径,可使用长文件名 ShortName 返回DOS风格的8.3形式的文件名 ShortPath 返

  • PHP创建/删除/复制文件夹、文件

    学习了PHP的文件编程,其中PHP自身提供了复制文件的函数(copy).自己也写了一个功能差不多的复制图片的函数,以此在这里记录一下. 在说该函数之前,先介绍一下使用PHP创建/删除文件夹.文件等知识. 1.创建文件夹 <?php //使用 file_exists("d:/mydir") 或 is_dir("d:/mydir")判断该文件夹是否存在 if(!file_exists("d:/mydir")) { if(mkdir("

随机推荐