이 기사의 예에서는 NodeJS가 파일을 탐색하여 파일 목록을 생성하는 기능을 설명합니다. 참고할 수 있도록 모든 사람과 공유하세요. 세부 사항은 다음과 같습니다.
기능 요구 사항: 직장에서 게시할 프로젝트의 정적 파일 목록을 알아야 하는 경우가 종종 있는데, 이는 너무 어려울 수 있습니다. 하나씩 검색하여 작성합니다.
내부의 파일 목록을 아는 것이 어렵다면 도스 트리를 사용하여 얻을 수도 있습니다.
여기에 공유하고, 노드를 통해 파일 경로를 알고, 원격 경로를 구성하고, 직접 복사하여 게시하세요.
새로운 filelist.js에 댓글이 있으니 떨리지 않겠습니다.
var fs = require("fs"); //path模块,可以生产相对和绝对路径 var path = require("path"); //配置远程路径 var remotePath = "/resource/fd/promote/201507/qixi/"; //获取当前目录绝对路径,这里resolve()不传入参数 var filePath = path.resolve(); //读取文件存储数组 var fileArr = []; //读取文件目录 fs.readdir(filePath,function(err,files){ if(err){ console.log(err); return; } var count = files.length; //console.log(files); var results = {}; files.forEach(function(filename){ //filePath+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“ fs.stat(path.join(filePath,filename),function(err, stats){ if (err) throw err; //文件 if(stats.isFile()){ if(getdir(filename) == 'html'){ var newUrl=remotePath+filename; fileArr.push(newUrl); writeFile(fileArr); } // (getdir(filename) == 'html')&&(fileArr.push(filename);writeFile(newUrl)); // console.log("%s is file", filename); }else if(stats.isDirectory()){ // console.log("%s is a directory文件目录", filename); //返回指定文件名的扩展名称 //console.log(path.extname("pp/index.html")); if(filename == 'css' || filename == 'images'){ //var readurl = filePath+'/'+filename; //filePath+"/"+filename不能用/直接连接,Unix系统是”/“,Windows系统是”\“ // console.log(path.join(filePath,filename)); var name = filename; readFile(path.join(filePath,filename),name); } } }); }); }); //获取后缀名 function getdir(url){ var arr = url.split('.'); var len = arr.length; return arr[len-1]; } //获取文件数组 function readFile(readurl,name){ console.log(name); var name = name; fs.readdir(readurl,function(err,files){ if(err){console.log(err);return;} files.forEach(function(filename){ // console.log(path.join(readurl,filename)); fs.stat(path.join(readurl,filename),function(err, stats){ if (err) throw err; //是文件 if(stats.isFile()){ var newUrl=remotePath+name+'/'+filename; fileArr.push(newUrl); writeFile(fileArr) //是子目录 }else if(stats.isDirectory()){ var dirName = filename; readFile(path.join(readurl,filename),name+'/'+dirName); //利用arguments.callee(path.join())这种形式利用自身函数,会报错 //arguments.callee(path.join(readurl,filename),name+'/'+dirName); } }); }); }); } // 写入到filelisttxt文件 function writeFile(data){ var data = data.join("\n"); fs.writeFile(filePath+"/"+"filelist.txt",data+'\n',function(err){ if(err) throw err; console.log("写入成功"); }); }
node flielist.js
를 실행하면 filelist.txt 생성될 것입니다. 파일에는 우리가 원하는 경로가 포함되어 있습니다.
때때로 삭제할 수 없는 파일이 있는 경우가 종종 있습니다. 파일 깊이가 너무 길어서 rm_rf를 삭제할 수 없지만 nodejs를 통해 삭제할 수 있습니다.
var fs = require("fs"); var path = require("path"); deleteFolderRecursive = function(url) { var files = []; //判断给定的路径是否存在 if( fs.existsSync(url) ) { //返回文件和子目录的数组 files = fs.readdirSync(url); files.forEach(function(file,index){ // var curPath = url + "/" + file; var curPath = path.join(url,file); //fs.statSync同步读取文件夹文件,如果是文件夹,在重复触发函数 if(fs.statSync(curPath).isDirectory()) { // recurse deleteFolderRecursive(curPath); // 是文件delete file } else { fs.unlinkSync(curPath); } }); fs.rmdirSync(url); }else{ console.log("给定的路径不存在,请给出正确的路径"); } }; deleteFolderRecursive("./grunt");
이 글이 nodejs 프로그래밍에 종사하는 모든 분들께 도움이 되기를 바랍니다.
더 많은 NodeJS 파일 탐색 및 파일 목록 기능 예제를 보려면 PHP 중국어 웹사이트를 주목하세요!