zoukankan      html  css  js  c++  java
  • nodeAPI--FS

    fs是唯一一个同时提供同步和异步API的模块;

    读取文件夹文件名,数组形式返回:

    var fs = require('fs');
    //async
    fs.readdir('./',function(err,files) {
    	console.log(files);
    });
    //sync
    var files = fs.readdirSync('../')
    console.log(files));
    

    //fs.readFile()读取文件;

    process全局对象中包含三个流对象:stdin,stdout,stderr;  console.log()内部就是在指定字符后加上 字符,并将其写到stdout流中;

    :node中有各种流,简而言之,当涉及不断地对数据进行读写时,流就出现了;

    Node命令行(CLI):

    • argv:
      • process.argv包含了Node程序运行时的参数值;以数组返回,第一个元素是node,第二个元素是执行的文件路径,接着是命令行后跟的参数;
      • 所以获取参数process.argv.slice(2);
    • 工作目录:
      • __dirname:获取执行文件时该文件所在目录;
      • process.cwd():获取程序运行时,当前的工作目录;
      • process.chdir('/'):更改目录,如
    //显示当前根目录:
    process.chdir('/');
    console.log(process.cwd());
    //其他目录
    process.chdir('D:/Dict');
    console.log(process.cwd());
    
    • process.env:数组形式返回电脑环境变量,可以以关联表查找;
    • process.exit(code);退出程序,省略或code为0表示成功退出,1表示失败退出,一般同用console.error();
    • ANSI转义码:如
      console.log('33[90m' + data.replace(/(.*)/g, '  $1') + '33[39m');
      

      33表示转义开始;[表示颜色设置;m表示颜色设置结束;如果结尾有还原颜色的设置,表示只改变这一部分颜色;

    读写文件例子:

     1 var fs = require('fs'),
     2     cwd = process.cwd;  //当前绝对路径
     3     stdin = process.stdin,
     4     stdout = process.stdout,  //简化
     5     stats = [];
     6 
     7 fs.readdir(cwd(), function  (err, files) {
     8     console.log(' ');
     9     if(!files.length) {
    10         return console.log('33[31m No files to show!33[39m
    ');
    11     }
    12     console.log('Select which file or directory you want to see
    ');
    13 
    14     function file(i) {
    15         var filename = files[i];
    16         fs.stat(__dirname + '/' + filename, function (err, stat) {  //文件或文件夹的原目录
    17             stats[i] = stat;
    18             if(stat.isDirectory()) {  //文件夹的话
    19                 console.log(' ' + i + ' 33[36m' + filename + '/33[39m');
    20             } else {
    21                 console.log(' ' + i + ' 33[90m' + filename + '33[39m');
    22             }
    23             if(++i == files.length) {
    24                 read();
    25             } else {
    26                 file(i);
    27             }
    28         });
    29     };
    30     function read() {
    31         console.log(' ');
    32         stdout.write(' 33[33mEnter your choice: 33[39m');
    33         stdin.resume(); //等待用户输入
    34         stdin.setEncoding('utf8');   //设置流编码‘utf8'支持特殊字符;
    35         stdin.on('data', option);  //监听data事件;
    36     };
    37     function option(data) {
    38         var filename = files[Number(data)];
    39         if(!filename) {
    40             stdout.write(' 33[31mEnter your choice: 33[39m');
    41         } else {
    42             stdin.pause(); //停止输入
    43             if(stats[Number(data)].isDirectory()) {
    44                         fs.readdir(__dirname + '/' + filename, function(err, files) {
    45                             console.log(' ');
    46                             console.log(' (' + files.length + ' files' + ')');
    47                             files.forEach(function(file) {
    48                                 console.log(' - ' + files);
    49                             });
    50                             console.log(' ');    
    51                         });
    52                     } else {
    53                         fs.readFile(__dirname + '/' + filename, 'utf8', function(err, data) {
    54                             console.log(' ');
    55                             console.log('33[90m' + data.replace(/(.*)/g, ' $1') + '33[39m');
    56                         })
    57                     }
    58         }
    59     };
    60     file(0);
    61 });
    View Code

     stream:

    var stream = fs,createReadStream(_filename);  //为文件创建一个可读Stream对象;
    //每次读取可变大小内容块,且每次读取后会触发回调事件;
    stream.on('data', function(chunk) {
      //
    });
    stream.on('end',function(chunk){
    //
    });

    监视:

    • watchFiles(); //监视文件;
      //监视当前目录下files目录中的.css文件
      var fs = require('fs');
      process.chdir('files')
      var files = fs.readdirSync(process.cwd());
      files.forEach(function(file) {
        if(/.css/.test(file)) {
        	fs.watchFile(process.cwd() + '/' + file, function() {
        		console.log('-' + file + ' changed!');
        	})
        }
      })
    • watch();//监视目录;
      var fs = require('fs');
      fs.watch(process.cwd(), function (event, filename) {
        console.log(event,filename);
      }); 
      

        

      

  • 相关阅读:
    Spring事务深入剖析--spring事务失效的原因
    CentOS 安装 VMware Tools 详细方法
    -手写Spring注解版本&事务传播行为
    手写spring事务框架-蚂蚁课堂
    springMvc接口开发--对访问的restful api接口进行拦截实现功能扩展
    spring框架中JDK和CGLIB动态代理区别
    mysql事务的坑----MyISAM表类型不支持事务操作
    git 远程分支和tag标签的操作
    git fetch和git pull的区别
    umask 文件默认权限
  • 原文地址:https://www.cnblogs.com/jinkspeng/p/4063537.html
Copyright © 2011-2022 走看看