美文网首页
nodejs读写文本

nodejs读写文本

作者: LElysion | 来源:发表于2018-08-29 17:54 被阅读0次

fs模块

fs 模块提供了一个 API,用于以模仿标准 POSIX 函数的方式与文件系统进行交互。

使用该模块:

const fs = require('fs');

读写文本

详细方法请参阅官方文档http://nodejs.cn/api/fs.html;

读取文本需要用到readFile方法, 该方法为fs.readFile(path[, options], callback)callback中可以接受两个参数errdatareadFile方法为异步操作, 同样的也存在同步操作readFileSync

使用该方法:

fs.readFile('./mock/person.json', (err, data) => {
    if(err) throw err;
    console.log(data); // 这里将会获得文本内容, 以String形式获取
  })

写入文本需要用到writeFile方法, 该方法为fs.writeFile(file, data[, options], callback)file为文件名或文件地址等, data则是写入的数据,options确定编码等, callback则接收一个参数err

使用该方法:

fs.writeFile('./mock/person.json', data, err => {
    if(err) throw err;
    console.log('write over');
  })

可以通过readFilewriteFile方法对本地.json等文件进行读取和写入, 具体请查阅下方示例代码

let fs = require('fs');
let create = require('./create');
// writeJson(newRole);
// deleteJson(1);
// editJson(1, {
//   name: 'Adventurer1'
// })

writeJson(create.createRole());

// pagination(0, 2)
// 分页功能
function pagination(page, size) {
  fs.readFile('./mock/person.json', (err, data) => {
    if(err) throw err;
    let person = JSON.parse(data.toString());
    let pagePerson = person.data.slice(size * page, (page + 1) * size);
    console.log('pagination over');
    console.log(pagePerson);
  })
}
// 修改某一项(根据id, 若是存储数据格式不同则需要不同查询方式)
function editJson(id, params) {
  fs.readFile('./mock/person.json', (err, data)=> {
    if(err) throw err;;
    let person = JSON.parse(data.toString());
    for(let i = 0; i< person.data.length; i++) {
      if(id === person.data[i].id) {
        for(let key in params) {
          if(person.data[i][key]) {
            person.data[i][key] = params[key];
          }
        }
      }
    }
    person.total = person.data.length;
    let str = JSON.stringify(person);
    fs.writeFile('./mock/person.json', str, err => {
      if(err) throw err;
      console.log('edit over')
    })
  })
}
// 写入数据, 这里是将数据填入到data数组里, 同样, 不同存储格式需要稍微修改
function writeJson(params) {
  fs.readFile('./mock/person.json', (err, data) => {
    if(err) throw err;

    let person = JSON.parse(data.toString());
    person.data = person.data || [];
    console.log(person.data);
    person.data.push(params);
    person.total = person.data.length;
    console.log(person);
    let str = JSON.stringify(person);
    console.log(str)
    fs.writeFile('./mock/person.json', str, function(err) {
      if(err) {
        console.error(err);
      }
      console.log('add over');
    })
  })
}
// 删除某项, 基于id
function deleteJson(id) {
  fs.readFile('./mock/person.json', (err, data) => {
    if(err) throw err;
    let person = JSON.parse(data.toString());
    for(let i = 0; i<person.data.length; i++) {
      if(id === person.data[i].id) {
        person.data.splice(i, 1);
      }
    }
    console.log(person.data);
    person.total = person.data.length;
    let str = JSON.stringify(person);
    console.log(str);
    fs.writeFile('./mock/person.json', str, err => {
      if(err) return console.error(err);
      console.log('delete id: ' + id + ' over');
    })
  })
}

下方是简易克苏鲁调查员属性生成,根据克苏鲁的召唤守秘人手册第七版设定

// create.js


function createRole() {
  let str = complexD(3, 6) * 5; // 力量
  let con = complexD(3, 6) * 5; // 体质
  let siz = (complexD(2, 6) + 6) * 5; // 体型
  let dex = complexD(3, 6) * 5; // 敏捷
  let app = complexD(3, 6) * 5; // 外貌
  let int = (complexD(2, 6) + 6) * 5; // 智力
  let pow = complexD(3, 6) * 5 // 意志
  let edu = (complexD(2, 6) + 6) * 5 // 教育

  return {
    str, con, siz, dex, app, int, pow, edu
  }

}

function complexD(n, d) {
  let b = dice(d);
  for(let i = 0; i< n - 1; i++) {
    b = b + dice(d);
  }
  return b;
}

function dice(d) {
  return Math.floor(Math.random() * d) + 1;
}

module.exports = {
  createRole
}
// save.js

let fs = require('fs');
let create = require('./create');

save(create.createRole());
// 写入数据
function save(params) {
  let str = JSON.stringify(params);
  fs.writeFile('./save.json', str, function (err) {
    if (err) throw err;
    console.log('add over');
  })
}

node save.js即可获得save.json, 如:
{"str":55,"con":60,"siz":60,"dex":40,"app":40,"int":55,"pow":55,"edu":70}

相关文章

  • nodejs读写文本

    fs模块 fs 模块提供了一个 API,用于以模仿标准 POSIX 函数的方式与文件系统进行交互。 使用该模块: ...

  • 文件和io(cookbook笔记)

    读写文本数据 读写文本数据 读写各种不同编码的文本数据 使用带有 rt 模式的 open() 函数读取文本文件 写...

  • 文本读写

    使用FileStream读取 使用FileStream写入 使用StreamReader读取 使用StreamWr...

  • 2.2、Python进阶02 文本文件的输入输出

    Python具有基本的文本文件读写功能。Python的标准库提供了更丰富的读写功能。文本文件的读写主要通过open...

  • c++ 读写文件

    写文件文本 读文件文本 读写二进制文件

  • nodejs 读写 excel

    一、读取解析 1. 安装 node-xlsx 2. 解析代码 3. 测试 excel 文件内容: 运行代码后输出内...

  • nodeJS 文件读写

    参考文件 大文件读写使用缓冲区方式

  • NodeJS 读写文件

    本文简介 点赞 + 关注 + 收藏 = 学会了 操作文件是服务端一个基础的功能,也是做后端开发的必备能力之一。 操...

  • Java IO流之拷贝(复制)文件

    方式一(字符流读写复制文件,仅限文本文件) 方式二(字符流缓冲区读写文件-高效,仅限文本文件) 方式三(字节流读写...

  • Python文本文件的输入输出操作学习

    Python具有基本的文本文件读写功能。Python的标准库提供有更丰富的读写功能。 文本文件的读写主要通过ope...

网友评论

      本文标题:nodejs读写文本

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