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)
}
})
})
}
}
网友评论