使用nodeJS中的fs模块对文件及目录进行读写,删除(4)

回调中提供的 filename 参数仅在 Linux 和 Windows 系统上支持。 即使在支持的平台中,filename 也不能保证提供。 因此,不要以为 filename 参数总是在回调中提供,如果它是空的,需要有一定的后备逻辑

fs.watch('somedir', (eventType, filename) => { console.log(`事件类型是: ${eventType}`); if (filename) { console.log(`提供的文件名: ${filename}`); } else { console.log('未提供文件名'); } });

var fs = require('fs'); var filename = '1.txt'; fs.watch(filename,function(eventType, _filename){ console.log(eventType);//change if(_filename){ console.log(_filename + '发生了改变');//'1.txt发生了改变' }else{ console.log('...'); } })

[注意]当一个文件出现或消失在一个目录里时,'rename'也会被触发

fs目录操作 1、创建 fs.mkdir(path[, mode], callback)

参数如下:

path - 文件路径。

mode - 设置目录权限,默认为 0777。

callback - 回调函数,回调只有一个可能的异常参数

var fs = require('fs'); fs.mkdir('./1',function(err){ console.log(err);//null })

fs.mkdirSync(path[, mode])

fs.mkdir(path[, mode], callback)的同步版本,返回undefined

var fs = require('fs'); fs.mkdirSync('./2');

2、删除 fs.rmdir(path, callback)

参数如下:

path - 文件路径。

callback - 回调函数,回调只有一个可能的异常参数

var fs = require('fs'); fs.rmdir('./1',function(err){ console.log(err);//null })

fs.rmdirSync(path, callback)

fs.rmdir(path, callback)的同步版本,返回undefined

var fs = require('fs'); fs.rmdirSync('./2');

3、读取 fs.readdir(path[, options], callback)

参数如下:

path <String> | <Buffer>

options <String> | <Object> 可选的 options 参数用于传入回调的文件名,它可以是一个字符串并指定一个字符编码,或是一个对象且由一个 encoding 属性指定使用的字符编码。 如果 encoding 设为 'buffer',则返回的文件名会被作为 Buffer 对象传入

    encoding <String> 默认 = 'utf8'

callback <Function> 回调有两个参数 (err, files),其中 files 是目录中不包括 '.' 和 '..' 的文件名的数组

var fs = require('fs'); fs.readdir('./',function(err,data){ console.log(err);//null /* [ '.csslintrc', '.jshintrc', 'a.txt', 'dist', 'Gruntfile.js', 'Gruntfile1.js', 'index.html', 'main.js', 'node_modules', 'package.json', 'src' ] */ console.log(data); })

var fs = require('fs'); fs.readdir('./',function(err,data){ data.forEach(function(item,index,arr){ fs.stat(item,function(err,stats){ if(stats.isFile()){ console.log('文件:' + item); } if(stats.isDirectory()){ console.log('目录:' + item); } }); }) }) /* 文件:.jshintrc 文件:.csslintrc 目录:dist 文件:Gruntfile.js 文件:index.html 文件:Gruntfile1.js 文件:main.js 目录:node_modules 文件:package.json 文件:a.txt 目录:src */

fs.readdirSync(path[, options], callback)

fs.readdir(path[, options], callback)的同步版本,返回一个不包括 '.' 和 '..' 的文件名的数组

var fs = require('fs'); var result = fs.readdirSync('./'); /* [ '.csslintrc', '.jshintrc', 'a.txt', 'dist', 'Gruntfile.js', 'Gruntfile1.js', 'index.html', 'main.js', 'node_modules', 'package.json', 'src' ] */ console.log(result);

遍历目录

遍历目录是操作文件时的一个常见需求。比如写一个程序,需要找到并处理指定目录下的所有JS文件时,就需要遍历整个目录

遍历目录时一般使用递归算法,否则就难以编写出简洁的代码。递归算法与数学归纳法类似,通过不断缩小问题的规模来解决问题

function factorial(n) { if (n === 1) { return 1; } else { return n * factorial(n - 1); } }

上边的函数用于计算N的阶乘(N!)。可以看到,当N大于1时,问题简化为计算N乘以N-1的阶乘。当N等于1时,问题达到最小规模,不需要再简化,因此直接返回1

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:http://www.heiqu.com/c1728b85745c00c30e353f6f80606a9e.html