美文网首页
node使用命令行读写静态文件

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

作者: 莫伊剑客 | 来源:发表于2021-01-19 10:49 被阅读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)
            }
          })
        })
      }
    }
    
    

    相关文章

      网友评论

          本文标题:node使用命令行读写静态文件

          本文链接:https://www.haomeiwen.com/subject/hqjqzktx.html