📜  Node.js fs.write() 方法

📅  最后修改于: 2022-05-13 01:56:19.766000             🧑  作者: Mango

Node.js fs.write() 方法

文件编写是编程的一个重要方面。每种编程语言都有一个定义良好的文件模块,可用于执行文件操作。 JavaScript 和 Node.js 也有文件模块,它提供了各种内置的方法来对文件执行读、写、重命名、删除和其他操作。 Node.js 的文件模块称为fs模块。默认情况下,fs 模块使用“UTF-8”编码写入文件。

fs.write() 方法是 fs 模块的内置应用程序编程接口,用于指定文件中从要写入的缓冲区开始写入的位置,以及将缓冲区的哪一部分写入文件。 fs.write() 方法也可以在没有缓冲区的情况下使用,只需使用字符串变量即可。下面给出的示例演示了 fs.write() 方法中缓冲区和字符串的使用。它是一种异步方法。

句法:

  • 使用缓冲区
    fs.write(fd, buffer, offset, length, position, callback)
  • 使用字符串
    fs.write(fd, string, position, encoding, callback)

参数:该方法接受上述和如下所述的以下参数:

  • fd:文件描述符,使用 fs.open() 方法打开文件返回的值。它包含一个整数值。
  • 缓冲区:它包含缓冲区类型值,如 Buffer、TypedArray、DataView。
  • offset:它是一个整数值,用于确定要写入文件的缓冲区部分。
  • 长度:它是一个整数值,指定要写入文件的字节数。
  • 位置:它是一个整数值,它保存位置是指距要写入数据的文件开头的偏移量。
  • 回调:它包含接收错误和写入文件的字节数的回调函数。
  • 字符串:将字符串写入 fd 指定的文件。
  • encoding:默认编码值为 UTF-8。

返回值:回调函数接收错误或写入的字节数。如果收到错误,则打印错误消息,否则打印写入的字节数。

示例 1:

// Node.js program to demonstrate the     
// fs.write() method
   
// Include fs module
const fs=require("fs");
   
// File path where data is to be written
// Here, we assume that the file to be in
// the same location as the .js file
var path = 'input.txt';
   
// Declare a buffer and write the
// data in the buffer
let buffer = new Buffer.from('GeeksforGeeks: '
    + 'A computer science portal for geeks\n');
   
// The fs.open() method takes a "flag"
// as the second argument. If the file
// does not exist, an empty file is
// created. 'a' stands for append mode
// which means that if the program is
// run multiple time data will be
// appended to the output file instead
// of overwriting the existing data.
fs.open(path, 'a', function(err, fd) {
  
    // If the output file does not exists
    // an error is thrown else data in the
    // buffer is written to the output file
    if(err) {
        console.log('Cant open file');
    }else {
        fs.write(fd, buffer, 0, buffer.length, 
                null, function(err,writtenbytes) {
            if(err) {
                console.log('Cant write to file');
            }else {
                console.log(writtenbytes +
                    ' characters added to file');
            }
        })
    }
})

输出:

51 characters added to file

input.txt 文件数据:

GeeksforGeeks: A computer science portal for geeks

解释:
成功执行程序后,存储在缓冲区中的数据将附加到所需的文件中。如果该文件事先不存在,则会创建一个新文件并将数据附加到该文件中。

示例 2:

// Node.js program to demonstrate the     
// fs.write() method
   
// Include fs module
const fs=require("fs");
   
const str = "Hello world";
const filename = "input.txt";
   
fs.open(filename, "a", (err, fd)=>{
    if(err){
        console.log(err.message);
    }else{
        fs.write(fd, str, (err, bytes)=>{
            if(err){
                console.log(err.message);
            }else{
                console.log(bytes +' bytes written');
            }
        })        
    }
})

输出:

11 bytes written

input.txt 文件数据:

Hello world

说明:在程序成功执行时,字符串值被写入(附加)到所需的文件中。

参考:

  • https://nodejs.org/api/fs.html#fs_fs_write_fd_buffer_offset_length_position_callback
  • https://nodejs.org/api/fs.html#fs_fs_write_fd_string_position_encoding_callback