目标:
运行nodejs代码,将指定路径下的 所有文件的文件名 写入到一个新的txt文件内。
实现:
1.创建一个js文件---readFile.js,里面写入如下代码:
var fs = require('fs'); //读写文件就需要引入fs--文件系统模块
var sep = require('path').sep; //平台的文件路径分割符
/**
* 递归输出文件目录、文件名
*/
var readDir = function(path) {
var exists = fs.existsSync(path), //以同步的方法检测目录是否存在
stat = fs.statSync(path); //文件信息
if (exists && stat) { //如果目录存在
if (stat.isFile()) { //如果是文件
var fpath = path.split(sep); //以路径分割符将路径分割成数组,后面调用symbol方法根据数组长度输出文件名前面的"-"条数
// console.info(symbol(fpath) + fpath[fpath.length - 1]); //打印文件名
fs.appendFile("dir.txt",(symbol(fpath) + fpath[fpath.length - 1]+'\r\n'),function(err){ //调用symbol方法输出"-"并拼接上文件名
if(err){
console.log(err);
}else{
console.log("file writes success!")
}
})
} else if (stat.isDirectory()) { //如果是文件夹
var fpath = path.split(sep); //以路径分割符将路径分割成数组
// console.info(symbol(fpath) + fpath[fpath.length - 1]);
fs.appendFile("dir.txt",(symbol(fpath) + fpath[fpath.length - 1]+'\r\n'),function(err){ //调用symbol方法输出"-"并拼接上文件夹名
if(err){
console.log(err);
}else{
console.log("file writes success!")
}
})
var files = fs.readdirSync(path); //返回 指定目录下所有文件名称 的数组对象并赋给files
if (files && files.length > 0) { //如果文件夹不为空
files.forEach(function(file) { //遍历数组
readDir(path + sep + file); //递归
});
}
}
} else {
console.info('根目录不存在.');
}
};
/**
* 符合拼接方法
*/
var symbol = function(fpath) {
var s = ' - ';
for (var i = 1; i < fpath.length; i++) {
s += ' - ';
}
return s;
};
readDir('E:\\mongo'); //调用方法(反斜杠转义,所以用两个,循环遍历输出E盘下mongo文件夹内的文件名到dir.txt)
2.在dos窗口用node执行上面的js文件
3.看一下成果:
欢迎交流指正~