這幾天因?yàn)楣灸硞€(gè)軟件需要申請軟件著作畔柔,然而申請軟件著作需要整理項(xiàng)目的源代碼。一個(gè)一個(gè)文件復(fù)制黏貼太麻煩了,所以寫了個(gè)腳本來搜集這些源碼,之前寫了一個(gè)python版的匹表,被不知道弄哪去了配名。目前電腦里面有node環(huán)境就直接用node重新寫了一版,這里記錄下凰盔,也希望能幫到有需要的人。
var path = require("path");
var fs = require('fs');
// 配置源碼位置
let prefix_path = "./"
// 要讀取的文件的格式
let allow_file_ext = [".java"]
// 源碼保存文件的路徑
let write_file_name = "source_code4.txt"
/**
* 掃描路徑下的文件
* @param {*} _path 要掃描的路徑
*/
function scanFile(_path) {
fs.stat(_path,(err,data)=>{
if (data.isDirectory()) {
console.log("讀取路徑 "+_path);
fs.readdir(_path,(err,paths)=>{
for (let index = 0; index < paths.length; index++) {
const m_path = paths[index];
let next_path = path.join(_path,m_path)
scanFile(next_path)
}
})
}else{
writeFile(_path)
}
})
}
/**
* 判斷是否是目標(biāo)文件
* @param {*} _path 文件路徑
*/
function isTargetFile(_path) {
let ext = path.extname(_path)
return allow_file_ext.includes(ext,0)
}
/**
* 寫入文件
* @param {*} _path 文件路徑
*/
function writeFile(_path) {
let need_write = isTargetFile(_path)
if (need_write) {
console.log("讀取"+_path+" 中...");
let file_name = path.basename(_path)
let data = fs.readFileSync(_path,'utf-8')
let _data = "\n"+file_name+"\n"+data
fs.writeFileSync(write_file_name,_data,{flag:'a',encoding:'utf-8',mode:'0666'},err=>{
if (err) {
console.log("寫入失敗");
}else{
console.log(""+_path+" 寫入完成");
}
})
}
}
/**
* 開始掃描
*/
scanFile(prefix_path)