const fs = require('fs'); const path = require('path'); let MainRunner = { sourcePath: process.argv[2], destPath: process.argv[3], start() { // 非绝对路径则前缀加上当前目录 if (!path.isAbsolute(this.sourcePath)) { this.sourcePath = path.join(__dirname, this.sourcePath); } if (!path.isAbsolute(this.destPath)) { this.destPath = path.join(__dirname, this.destPath); } this.delAllFiles(this.destPath); // 先删除旧文件 this.traversalDir(this.sourcePath, this.destPath); }, // 删除目录下所有文件 delAllFiles(path) { if (fs.existsSync(path)) { let files = fs.readdirSync(path); files.forEach((file, index) => { let curPath = path + '/' + file; if (!fs.statSync(curPath).isDirectory()) { fs.unlinkSync(curPath); } }); } }, // 遍历文件夹找到 traversalDir: function(srcDir, destDir) { let files = []; if ( fs.existsSync(srcDir) ) { //判断给定的路径是否存在 files = fs.readdirSync(srcDir); //返回文件和子目录的数组 for (let i = 0, len = files.length; i < len; i++) { let file = files[i]; let srcFile = path.join(srcDir, file); let destFile = path.join(destDir, file); let baseName = path.basename(srcFile, '.json'); let names = baseName.split('_'); if (names[0] !== 'track') { continue; } fs.readFile(srcFile, (err, data) => { if (err) { console.error(err); return; } //console.log('Success to read file: ' +srcFile); let strTrack = this.convertTrack(data); if (!strTrack || strTrack.length <= 0) { console.log('track is invalid: ' +srcFile); return; } fs.writeFile(destFile, strTrack, (err) => { if (err) { console.error(err); return; } //console.log('Success to write file: ' +destFile); }); }); } } return files; }, convertTrack(data) { let str = ''; try { let track = JSON.parse(data); str += '"'; for (let i = 0, len = track.length; i < len; i++) { str += track[i].fishId + ';'; str += track[i].pathId + ';'; str += track[i].enterTime + ';'; str += track[i].exitTime; if ((i+1) < len) { str += '#'; } } str += '"'; } catch(e) { console.error('convertTrack: error to convert track'); } return str; }, }; module.exports = MainRunner; MainRunner.start();