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()内部就是在指定字符后加上\n字符,并将其写到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('\033[90m' + data.replace(/(.*)/g, '  $1') + '\033[39m');
    
    

    \033表示转义开始;[表示颜色设置;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('\033[31m No files to show!\033[39m\n');

11     }

12     console.log('Select which file or directory you want to see\n');

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 + ' \033[36m' + filename + '/\033[39m');

20             } else {

21                 console.log(' ' + i + ' \033[90m' + filename + '\033[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(' \033[33mEnter your choice: \033[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(' \033[31mEnter your choice: \033[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('\033[90m' + data.replace(/(.*)/g, ' $1') + '\033[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);
    
    }); 
    
    

      

  

 

你可能感兴趣的:(node)