1. 程式人生 > >nodejs 統計某一資料夾下所有檔案的行數

nodejs 統計某一資料夾下所有檔案的行數

統計檔案的行數,簡單的方法就是統計換行符的個數,即使用String.split(‘\n’)分割後返回陣列的長度。目前有兩版實現,其中一版是gulp 地址如下gulp版統計行數地址另外一版便是這個。

//引用檔案系統模組
var fs = require("fs");
//引用imageinfo模組
var image = require("imageinfo");

function readFileList(path, filesList) {
    var files = fs.readdirSync(path);
    files.forEach(function (itm, index) {
        var
stat = fs.statSync(path + itm); if (stat.isDirectory()) { //遞迴讀取檔案 readFileList(path + itm + "/", filesList) } else { var obj = {};//定義一個物件存放檔案的路徑和名字 obj.path = path;//路徑 obj.filename = itm//名字 filesList.push(obj); } }) } var
getFiles = { //獲取資料夾下的所有檔案 getFileList: function (path) { var filesList = []; readFileList(path, filesList); return filesList; }, //獲取資料夾下的所有圖片 getImageFiles: function (path) { var imageList = []; this.getFileList(path).forEach((item) => { var
ms = image(fs.readFileSync(item.path + item.filename)); ms.mimeType && (imageList.push(item.filename)) })
; return imageList; }, //獲取非圖片檔案列表 getTxtList: function (path) { return this.getFileList(path).filter((item) => { var ms = image(fs.readFileSync(item.path + item.filename)); return !ms.mimeType }); } }; getFiles.getTxtList("./dist/").forEach(function (item) { let dirState = fs.existsSync('./countLine');//判斷目錄是否存在 if (!dirState) { fs.mkdirSync('./countLine')//建立目錄 } let state = fs.existsSync('./countLine/fileInfo.txt') let cData = ""; if (state) { cData = fs.readFileSync('./countLine/fileInfo.txt')//同步讀取統計檔案內容 } let filePath = item.path + item.filename let content = fs.readFileSync(filePath) cData = cData.toString('utf-8') + filePath + " " + content.toString('utf8').split('\n').length + "\n"; fs.writeFileSync('./countLine/fileInfo.txt', cData) })