const fs = require('fs'); const path = require('path'); let Converter = { sourcePath: __dirname + '/' + process.argv[2], destPath: __dirname + '/' + process.argv[3], start() { this.traversalDir(this.sourcePath, this.destPath); }, // 遍历文件夹找到 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 curPath = path.join(srcDir, file); fs.readFile(curPath, (err, data) => { if (err) { console.error(err); return; } console.log('Success to read file: ' +curPath); let str = this.writePath(data); if (str && str.length > 0) { let destFile = path.join(destDir, file); fs.writeFile(destFile, str, (err) => { if (err) { console.error(err); return; } console.log('Success to write file: ' +destFile); }); } }); } } return files; }, writePath(data) { if (!data || data.length <= 0) { cc.warn('writePath: path is invalid'); return ''; } let str = ''; try { let paths = JSON.parse(data); str = '{'; for (let i = 0, len = paths.length; i < len; i++) { let path = paths[i]; str += '"' + path.pathId + '":'; str += '"' + path.speeds.join('|') + ';'; str += this.writePoints(path.points) + ';'; if (!path.ctrls) { str += path.type + '"'; } else { str += path.type + ';'; str += this.writeCtrls(path.ctrls) + '"'; } if ((i+1) < len) { str += ','; } } str += '}'; } catch(e) { cc.error('writePath: error to format path'); } return str; }, writePoints(arr) { if (!arr || arr.length <= 0) { cc.warn('writePoint: arr is invalid'); return ''; } let str = ''; try { for (let i = 0, len = arr.length; i < len; i++) { let pt = arr[i]; str += pt.x + ',' + pt.y; if ((i+1) < len) { str += '|'; } } } catch(e) { cc.error('writePoints: error to format points'); } return str; }, writeCtrls(arr) { if (!arr || arr.length <= 0) { cc.warn('writeCtrls: arr is invalid'); return ''; } let str = ''; try { for (let i = 0, len = arr.length; i < len; i++) { let pt = arr[i]; str += pt.x + ',' + pt.y + ',' + pt.z + ',' + pt.w; if ((i+1) < len) { str += '|'; } } } catch(e) { cc.error('writeCtrls: error to format ctrls'); } return str; } }; module.exports = Converter; Converter.start();