node使用命令行读写静态文件

2021-01-19  本文已影响0人  莫伊剑客

server

// index.js

// 实现⼀个⽂件系统读写数据库
const { stat } = require('../../utils')
const fs = require("fs");
const get = async key => {
  // 判断文件是否存在
  if (await stat("./db.json")) {
    fs.readFile("./db.json", (err, data) => {
      if (err) return
      const json = JSON.parse(data);
      console.log(json[key]);
    });
  } else {
    console.log('文件不存在')
  }
}
const set = async (key, value) => {
  // 判断文件是否存在
  if (await stat("./db.json")) {
    fs.readFile("./db.json", (err, data) => {
      // 可能是空⽂件,则设置为空对象
      const json = JSON.parse(data);
      json[key] = value; // 设置值
      // 重新写⼊⽂件
      fs.writeFile("./db.json", JSON.stringify(json), err => {
        if (err) {
          console.log(err);
        }
        console.log("写⼊成功!");
      });
    });
  } else {
    // 重新写⼊⽂件
    const json = {};
    json[key] = value; // 设置值
    fs.writeFile("./db.json", JSON.stringify(json), err => {
      if (err) {
        console.log(err);
      }
      console.log("写⼊成功!");
    });
  }
}
// 命令⾏接⼝部分
const readline = require("readline");
const rl = readline.createInterface({
  input: process.stdin,
  output: process.stdout
});
rl.on("line", function (input) {
  const [op, key, value] = input.split(" ");
  if (op === 'get') {
    get(key)
  } else if (op === 'set') {
    set(key, value)
  } else if (op === 'quit') {
    rl.close();
  } else {
    console.log('没有该操作');
  }
});
rl.on("close", function () {
  console.log("程序结束");
  process.exit(0);
});

utils

const os = require('os');
const fs = require('fs');
///获取本机ip///
module.exports = {
  getIPAdress: function () {
    var interfaces = os.networkInterfaces();
    for (var devName in interfaces) {
      var iface = interfaces[devName];
      for (var i = 0; i < iface.length; i++) {
        var alias = iface[i];
        if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
          return alias.address;
        }
      }
    }
  },
// 判断文件是否存在
  stat: function (url) {
    return new Promise(resolve => {
      fs.stat(url, (err, stats) => {
        if (err) {
          resolve(false)
        } else {
          resolve(true)
        }
      })
    })
  }
}

上一篇下一篇

猜你喜欢

热点阅读