Node初体验之fs模块

功能

Node.js 的 fs 模块提供了文件系统(File System)的API,可实现与硬盘的交互。这个模块是Node.js的核心模块之一,它提供了同步和异步两种方式来执行文件操作。

以下是一些常用的 fs 模块功能:

在使用之前需要先导入

const fs = require('fs');

1.读取文件 (fs.readFile 和 fs.readFileSync)

// 异步读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) {
    console.error(err);
    return;
  }
  console.log(data);
});
// 同步读取文件
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);

2.写入文件 (fs.writeFile 和 fs.writeFileSync)

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

        参数说明:file 文件名

                          data 待写入的数据

                          options 选项设置,根据实际需求可选择使用

                           callback 写入回调

// 异步写入文件    如果文件不存在则创建文件
fs.writeFile('output.txt', 'Hello, World!', err => {
  if (err) throw err;
  console.log('The file has been saved!');
});
// 同步写入文件   会阻塞代码的执行,直到写入文件执行完毕
try {
  fs.writeFileSync('output.txt', 'Hello, World!');
  console.log('The file has been saved!');
} catch (err) {
  console.error(err);
}

3.追加文件 (fs.appendFile 和 fs.appendFileSync)

//异步追加文件
fs.appendFile('output.txt', '\nAppended text', err => {
  if (err) {
    console.error('Error appending to file:', err);
    return;
  }
  console.log('Text appended successfully');
});
//同步追加文件
try {
  fs.appendFileSync('output.txt', '\nAppended text');
  console.log('Text appended successfully');
} catch (err) {
  console.error('Error appending to file:', err);
}

重命名文件 (fs.rename 和 fs.renameSync)

//异步重命名文件
fs.rename('oldName.txt', 'newName.txt', err => {
  if (err) {
    console.error('Error renaming file:', err);
    return;
  }
  console.log('File renamed successfully');
});
//同步重命名文件
try {
  fs.renameSync('oldName.txt', 'newName.txt');
  console.log('File renamed successfully');
} catch (err) {
  console.error('Error renaming file:', err);
}

删除文件 (fs.unlink 和 fs.unlinkSync)

//异步删除文件
fs.unlink('output.txt', err => {
  if (err) {
    console.error('Error deleting file:', err);
    return;
  }
  console.log('File deleted successfully');
});
//同步删除文件
try {
  fs.unlinkSync('output.txt');
  console.log('File deleted successfully');
} catch (err) {
  console.error('Error deleting file:', err);
}

检查文件状态 (fs.stat 和 fs.statSync)

//异步检查文件状态
fs.stat('example.txt', (err, stats) => {
  if (err) {
    console.error('Error stating file:', err);
    return;
  }
  console.log('File stats:', stats);
});
//同步检查文件状态
const stats = fs.statSync('example.txt');
console.log('File stats:', stats);

创建和删除目录 (fs.mkdirfs.rmdirfs.mkdirSyncfs.rmdirSync)

//异步创建目录
fs.mkdir('newDir', { recursive: true }, err => {
  if (err) {
    console.error('Error creating directory:', err);
    return;
  }
  console.log('Directory created successfully');
});
//同步创建目录
try {
  fs.mkdirSync('newDir', { recursive: true });
  console.log('Directory created successfully');
} catch (err) {
  console.error('Error creating directory:', err);
}
//异步删除空目录   如果想要删除非空目录,使用rimraf库
fs.rmdir('emptyDirectoryPath', (err) => {
  if (err) {
    console.error('Error deleting directory:', err);
    return;
  }
  console.log('Empty directory deleted successfully');
});
//同步删除空目录
try {
  fs.rmdirSync('emptyDirectoryPath');
  console.log('Empty directory deleted successfully');
} catch (err) {
  console.error('Error deleting directory:', err);
}

读取目录内容 (fs.readdir 和 fs.readdirSync)

//异步读取目录内容
fs.readdir('directoryPath', (err, files) => {
  if (err) {
    console.error('Error reading directory:', err);
    return;
  }
  console.log('Directory contents:', files);
});
//同步读取目录内容
const files = fs.readdirSync('directoryPath');
console.log('Directory contents:', files);

监视文件变化 (fs.watch)

//只能监听到文件或目录被重命名、移动或者内容发生变化时触发
const watcher = fs.watch('fileToWatch.txt', (eventType, filename) => {
  console.log(`Event type is: ${eventType}`);
  if (filename) {
    console.log(`Filename provided: ${filename}`);
  }
  // Do something when a file is changed, added, or deleted.
});

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值