zoukankan      html  css  js  c++  java
  • 极简 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 章节会有详细介绍

  • 相关阅读:
    git .gitignore re-include
    excel 排名次
    ssh agent and ssh add for git Permission denied
    Git 仓库 清理 瘦身
    EF Core ThenInclude 2.0自动完成提示有误,坑了一下
    Entity Framework Core 导航属性 加载数据
    .net core mvc 模型绑定 之 json and urlencoded
    HttpClientHelper
    提示错误:“应为“providerInvariantName”参数的非空字符串。”
    关于.NET WebAPI 常见的跨域问题 解决清单
  • 原文地址:https://www.cnblogs.com/dolphinX/p/13544753.html
Copyright © 2011-2022 走看看