📜  nodejs 打开文件 - Javascript (1)

📅  最后修改于: 2023-12-03 15:03:16.055000             🧑  作者: Mango

使用Node.js打开文件

在Node.js中,可以使用内置的fs模块来打开文件。该模块提供了许多方法,可以用于读取、写入、更新和删除文件。

打开文件

要打开文件,可以使用fs.open()方法。该方法接受三个参数:文件路径、打开文件的标志和文件的权限。

const fs = require('fs');

fs.open('/path/to/file', 'r', (err, fd) => {
  if (err) throw err;
  // 处理文件
  fs.close(fd, (err) => {
    if (err) throw err;
  });
});

上面的代码在只读模式下打开了一个文件。第二个参数是标志,可以是以下之一:

  • 'r' - 只读模式。如果文件不存在,将发生错误。
  • 'r+' - 读写模式。如果文件不存在,将发生错误。
  • 'rs+' - 读写模式,要求操作系统绕过本地的文件系统缓存。
  • 'w' - 只写模式。如果文件不存在,则创建文件;如果文件已存在,则截断(即将文件大小设置为0)。
  • 'wx' - 排它写模式。与'w'类似,但是如果文件已存在,则打开失败。
  • 'w+' - 读写模式。如果文件不存在,则创建文件;如果文件已存在,则截断。
  • 'wx+' - 与'w+'类似,但是如果文件已存在,则打开失败。

第三个参数是一个八进制整数,表示文件的权限。默认值为0o666,意味着创建的文件将允许读写。

读取文件

要读取打开的文件,可以使用fs.read()方法。该方法接受四个参数:文件描述符、读取数据的缓冲区、要读取的数据的起始位置和要读取的字节数。

const fs = require('fs');

const buffer = Buffer.alloc(1024);

fs.open('/path/to/file', 'r', (err, fd) => {
  if (err) throw err;
  
  // 读取文件
  fs.read(fd, buffer, 0, buffer.length, 0, (err, bytesRead, buffer) => {
    if (err) throw err;
    console.log(`读取 ${bytesRead} 字节的数据`);
    
    // 处理数据
  });
  
  fs.close(fd, (err) => {
    if (err) throw err;
  });
});

上面的代码创建了一个缓冲区,大小为1024字节。然后,使用fs.read()方法从文件中读取数据,读取的数据将存储在缓冲区中。第四个参数是要读取的字节数。如果未指定,将读取整个文件。

写入文件

要写入打开的文件,可以使用fs.write()方法。该方法接受四个参数:文件描述符、要写入的数据、要写入的起始位置和要写入的字节的数量。

const fs = require('fs');

const data = 'Hello, world!';

fs.open('/path/to/file', 'w', (err, fd) => {
  if (err) throw err;
  
  // 写入数据
  fs.write(fd, data, (err, bytesWritten) => {
    if (err) throw err;
    console.log(`写入 ${bytesWritten} 字节的数据`);
  });
  
  fs.close(fd, (err) => {
    if (err) throw err;
  });
});

上面的代码将Hello, world!写入文件中。

关闭文件

要关闭打开的文件,可以使用fs.close()方法。这是一个异步方法,接受两个参数:文件描述符和一个回调函数。

const fs = require('fs');

fs.open('/path/to/file', 'r', (err, fd) => {
  if (err) throw err;
  // 处理文件
  fs.close(fd, (err) => {
    if (err) throw err;
  });
});

上面的代码打开一个文件,并在处理文件后将其关闭。这是一个良好的实践,以避免在Node.js中打开太多的文件。