帮我用js写一个计算某一个文件夹下所有文件里的代码行数,拓展名为.js,.java
时间: 2023-11-27 12:55:17 浏览: 29
好的,以下是一个简单的实现:
```javascript
const fs = require('fs');
const path = require('path');
function countLinesInFile(filePath) {
const ext = path.extname(filePath);
if (ext !== '.js' && ext !== '.java') {
return 0;
}
const content = fs.readFileSync(filePath, 'utf8');
const lines = content.split('\n');
return lines.filter(line => line.trim() !== '').length;
}
function countLinesInDirectory(directoryPath) {
let totalLines = 0;
const files = fs.readdirSync(directoryPath);
for (const file of files) {
const filePath = path.join(directoryPath, file);
if (fs.statSync(filePath).isDirectory()) {
totalLines += countLinesInDirectory(filePath);
} else {
totalLines += countLinesInFile(filePath);
}
}
return totalLines;
}
const directoryPath = 'path/to/directory';
const lines = countLinesInDirectory(directoryPath);
console.log(`Total lines in directory ${directoryPath}: ${lines}`);
```
这个代码会递归地遍历指定的目录,并计算每个 `.js` 和 `.java` 文件中的行数。对于每个文件,我们使用 `fs.readFileSync` 读取文件内容,然后将其拆分为行。我们过滤掉空白行,最后返回行数。
然后我们遍历目录中的每个文件和子目录,并对于每个文件调用 `countLinesInFile` 函数来计算行数,对于每个子目录则递归调用 `countLinesInDirectory` 函数。最后,我们将每个文件和子目录的行数加起来,返回总行数。