• 极简 Node.js 入门


    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node

    本文更佳阅读体验:https://www.yuque.com/sunluyong/node/fs-write

    看完文件读取再看文件写入非常简单,两者的操作几乎一一对应

    fs.writeFile

    fs.writeFile(file, data[, options], callback)

    1. file:文件名或文件描述符
    2. data:常用的主要是 string 和 buffer
    3. callback(err)

    当 file 是文件名时,则异步地写入数据到文件,如果文件已存在,则覆盖文件内容

    const fs = require('fs');
    
    const data = Buffer.from('Hello, Node.js');
    fs.writeFile('./test.txt', data, err => {
      if (err) throw err;
      console.log('文件已被保存');
    });
    

    fs.write

    fs.write 有两种重载

    1. fs.write(fd, buffer[, offset[, length[, position]]], callback):参数含义和 fs.read 几乎相同
    2. fs.write(fd, string[, position[, encoding]], callback):只能把字符串内容全部写入文件

    两个的区别就是适用 buffer 可以治写入 buffer 中 offset ~ length + offset 的内容,而使用字符串只能把字符串内容全部写入文件

    const fs = require('fs');
    
    const data1 = Buffer.from('Hello, Node.js');
    const data2 = 'Hello, Node.js';
    
    const fd = fs.openSync('./test.txt', 'w');
    console.log(fd)
    
    fs.write(fd, data1, err => {
      if (err) throw err;
      console.log('data1 已被写入');
    });
    
    fs.write(fd, data2, err => {
      if (err) throw err;
      console.log('data2 已被写入');
    });
    
    setTimeout(() => {
      fs.close(fd, console.log);
    }, 100);
    

    fs.appendFile

    fs.appendFile(path, data[, options], callback) 将数据追加到文件尾部,如果文件不存在则创建该文件

    const fs = require('fs/promises');
    
    const data1 = Buffer.from('Hello,');
    const data2 = Buffer.from(' Node.js');
    
    fs.appendFile('./test.txt', data1)
      .then(() => {
        fs.appendFile('./test.txt', data2);
        console.log('文件内容追加完成');
      });
    

    fs.createWriteStream

    fs.createWriteStream(path[, options]) 用来创建一个可写的文件流,options 和 fs.createReadStream 几乎相同
    options(比较常用的有)

    • fd: 默认值 null,如果指定了 fd,则会忽略 path 参数,使用指定的文件描述符(不会再次触发 open 事件)
    • mode:默认值 0o666
    • autoClose: 默认值: true,当 'error' 或 'finish' 事件时,文件描述符会被自动地关闭
    • start: 开始写入文件的位置,不设置默认覆盖


    把一个可读流内容写到可写流非常简单

    const fs = require('fs');
    
    fs.createReadStream('./test.txt')
      .pipe(fs.createWriteStream('./copy.txt'));
    

    关于流的介绍和更多使用在 Buffer 和 Stream 章节会有详细介绍

  • 相关阅读:
    IDEA修改git账号及密码的方法
    深入浅出数据库索引原理
    切勿用普通for循环遍历LinkedList
    在Jquery里格式化Date日期时间数据
    Java 根据年月日精确计算年龄
    jquery判断页面元素是否存在
    js中 '枚举' 的使用
    springMVC怎么接受前台传过来的多种类型参数?(集合、实体、单个参数)
    jquery批量绑定click事件
    springMVC怎么接收日期类型的参数?
  • 原文地址:https://www.cnblogs.com/dolphinX/p/13544753.html
Copyright © 2020-2023  润新知