nodejs文件操作,流和管道

/*
 * 文件系统模块fs模块,对文件进行操作,读文件,写文件,删除文件等
 
  //读文件
  在node.js中为读取文件提供了两种方式:直接读取()和流读取(方便网络通信)
  直接读取有同步和异步两种
 
  //异步读取
  程序从上往下执行,当遇到异步语句时,同步的代码继续向后执行,异步单独开一个任务进程,
  在主进程里面分出一个任务进程,任务进程在读取文件完成后再通知主进程,调用回调函数中的函数
  var fs = require("fs");
  fs.readFile('input.txt', function(err, data){
  if(err){
  console.error(err);
  }
  console.log("异步读取:"+data.toString());
  });
  ...//主进程从这里继续执行
 
  //同步读取
  程序从上往下执行,在执行下一句时,前面一句必须已经执行完
  就是按照代码顺序执行,会比较耗时吧,如果读取文件所花时间较长的话
  var fs= require("fs");
  var data=fs.readFileSync('input.txt');
  console.log("同步读取:"+data.toString());
 
 
  //写文件
  同样也有同步和异步两种方式
  fs.writeFile();3个参数,文件名,数据,回调函数
  fs.writeFileSync();
 
  //删除文件
  fs.link();两个参数,一个为文件名,一个回调函数;
*/


/*
 * 数据在网络上传输都是使用的字节码;
  流是一组有序的,有起点,有终点的字节数据的传输方式。
 
  //读取文件流
  var fs = require('fs');
  var data = "";
  var readerStream = fs.createReadStream("xx.txt");//创建可读流;架管道
  readerStream.on('data',function(chunk){   //来监听data事件,有数据读出时就会触发
    data+=chunk;
  });
 
  readerStream.on('end', dunction(){      //监听end事件,当文件读取完毕时,就会触发
  console.log(data);
  })
 
  readerStream.on('error', dunction(){      //监听error事件,当文件读取出错时,就会触发
  console.log(data);
  })
 
  console.log("程序执行完毕");
 
  //写入文件流
  var fs = require('fs');
  var data = "";
  var str = fs.createWriteStream("xx.txt");//创建可写流;架管道
  //向str写入内容
  str.write('随便写点。。');
  //写完以后要结束,如果不结束,它将一直等待;
  str.end();
  //绑定一个finish事件
  str.on('finish',function(){
  console.log('写入成功');
  })
  //也有error事件等
 */




/*
 * 管道提供了一个输出流到输入流的机制,将两边对接,流入流出,可以实现大文件的复制等,非常方便。
 
  var fs = require("fs");
  //创建一个可读流
  var readerStream = fs.createReadStream("input.txt");
  //创建一个可写流
  var writerStream = fs.creatWriteStream("output.txt");
  //复制,从输出流入到输入里面
  readerStream.pipe(writerStream);
 */

你可能感兴趣的:(nodejs)