nodejs方法使用

214 阅读1分钟

1.判断路径是否存在,不存在则创建

const path = require('path');
const fs = require('fs');
const util={};
/** * 检查路径是否存在 如果不存在则创建路径 
* @param {string} folderpath 文件路径 
*/
util.checkDirExist=(folderpath)=>{  
    const pathArr=folderpath.split('/');  
    let _path='';  
    for(let i=0;i<pathArr.length;i++){    
        if(pathArr[i]){      
            _path +=`/${pathArr[i]}`;      
            if (!fs.existsSync(_path)) {        
                fs.mkdirSync(_path);      
            }    
        }  
    }
}
module.exports = util;

2.删除文件

function removeFile(path) {
    fs.unlink(path, (err) => {
        if (err) throw err;
    });
}

3.添加文件(已存在则覆盖)

let fs = require("fs");
var request = require('request');
function download(uri, filename, callback){
    checkDirExist(filename);
    var stream = fs.createWriteStream(filename);
    request(uri).pipe(stream).on('close', callback);
}

4.读取windows任务管理器信息,判断指定程序是否运行

function getCheckOrder(callback) {
    exec('tasklist', function(err, stdout, stderr) {
        const lines = stdout.toString().split('\n');
        let flag = false;
        lines.forEach(i=>{
            if (i.indexOf('acad.exe') !== -1) {
                flag = true;
            }
        });
        callback(flag)
    });
}

5.通过windows注册表获取指定软件的版本等信息

function getCADMessage(callback) {
    let list = [];
    regedit.list(['HKLM\\SOFTWARE\\Autodesk\\AutoCAD']).on('data', function(entry) {
        let keys01 = entry.data.keys;
        keys01.forEach(function(key){
            regedit.list(['HKLM\\SOFTWARE\\Autodesk\\AutoCAD\\'+key]).on('data',function(e){
                let sum_key = e.key;
                var keys02 = e.data.keys;
                console.log("keys02:",keys02);
                if(keys02){
                    keys02.forEach(function(key){
                        if (key.indexOf("ACAD-") !== -1 && key.indexOf(":") === -1) {//判断是否按照了插件
                            regedit.list([sum_key+'\\'+key+'\\Applications']).on('data',function(e){
                                let map = {
                                    url: sum_key,
                                    detailedUrl: sum_key+'\\'+key+'\\Applications',
                                    flag: false
                                }
                                const keys = e.data.keys;
                                keys.forEach(function (item) {
                                    if (item === "OYADToolKit") {
                                        map.flag = true;
                                    }
                                });
                                list.push(map);
                            });
                        }
                        if (key.indexOf("ACAD-") !== -1 && key.indexOf(":") !== -1) {//获取版本信息
                            regedit.list([sum_key+'\\'+key]).on('data',function(e){
                                let val = e.data.values;
                                list.push(
                                        {
                                            url: sum_key,
                                            Location:val.Location.value,
                                            ProductName:val.ProductName.value
                                        }
                                    );
                                callback(list);
                            });
                        }
                    });
                }
            })
        });
    })
}

导出

exports.getCADMessage = getCADMessage;
exports.getCheckOrder = getCheckOrder;
exports.download = download;
exports.removeFile = removeFile

调用: 

var cadMessage = require('./demo');
ipcMain.on('down-test',  (event, args) => {
  try{
      for (let i = 0; i < args.length; i++) {
          cadMessage.download(args[i].url,args[i].relativePath,function () {})
      }
      for (let i = 0; i < args.length; i++) {
          if (args[i].isdel) {//删除文件
              cadMessage.removeFile(args[i].relativePath)
          }
      }
      event.reply("reply-down",true);
  }catch (e) {
      event.reply("reply-down",'更新失败:'+e.toString());
  }

});

ipcMain.on('send-test',  (event, args) => {
    cadMessage.getCADMessage((list)=>{
        event.reply("reply-test",list);
    });
});

ipcMain.on('send-update',  (event, args) => {
    cadMessage.getCheckOrder((list)=>{
        event.reply("reply-update",list);
    });
});

注意: getCADMessage返回一个函数