在Node.js中,处理文件是一个常见的任务,Node.js提供了一些内置的模块来帮助我们轻松地完成文件读写操作。本文将详细介绍如何在Node.js中进行文件读写,并提供丰富的示例代码。
fs 模块fs 模块是Node.js的核心模块之一,用于文件系统操作。在开始文件操作之前,我们需要先引入这个模块:
JavaScriptconst fs = require('fs');
fs.readFileSync 方法用于同步读取文件。它是一个阻塞操作,读取文件的内容并返回其内容。
参数说明:
path: 要读取的文件的路径。options (可选): 用于指定编码或标志。默认情况下,它是 null。JavaScriptconst fs = require('fs');
try {
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
} catch (err) {
console.error(err);
}

fs.writeFileSync 方法用于同步写入文件。它是一个阻塞操作,将数据写入到指定的文件中。
参数说明:
path: 要写入的文件的路径。data: 要写入的数据。options (可选): 用于指定编码、模式和标志。这是一个对象。默认值为 { encoding: 'utf8', mode: 0o666, flag: 'w' }。JavaScriptconst fs = require('fs');
const content = 'Hello, Node.js';
try {
fs.writeFileSync('example.txt', content);
console.log('File written successfully');
} catch (err) {
console.error(err);
}

fs.readFile 方法用于异步读取文件。它是一个非阻塞操作,读取文件的内容并通过回调函数返回结果。
参数说明:
path: 要读取的文件的路径。options (可选): 用于指定编码或标志。默认值是 null 。callback: 回调函数,包含两个参数 (err, data),其中 err 是一个错误对象,当读取成功时为 null,data 是读取到的文件内容。JavaScriptconst fs = require('fs');
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});

fs.writeFile 方法用于异步写入文件。它是一个非阻塞操作,将数据写入到指定的文件中并通过回调函数返回结果。
参数说明:
path: 要写入的文件的路径。data: 要写入的数据。options (可选): 用于指定编码、模式和标志。这是一个对象。默认值为 { encoding: 'utf8', mode: 0o666, flag: 'w' }。callback: 回调函数,如果写入成功,则这个函数没有参数;如果失败,则提供一个错误对象 err。JavaScriptconst fs = require('fs');
const content = 'Hello, Node.js';
fs.writeFile('example.txt', content, (err) => {
if (err) {
console.error(err);
return;
}
console.log('File written successfully');
});

有时我们需要将内容追加到文件的末尾,Node.js提供了同步和异步的方法来实现这一点。
fs.appendFileSync 方法用于同步追加内容到文件。
参数说明:
path: 要追加的文件路径。data: 要追加的数据。options (可选): 用于指定编码、模式和标志。默认值为 { encoding: 'utf8', mode: 0o666, flag: 'a' }。JavaScriptconst fs = require('fs');
const additionalContent = '\nAppend this text.';
try {
fs.appendFileSync('example.txt', additionalContent);
console.log('Content appended successfully');
} catch (err) {
console.error(err);
}

fs.appendFile 方法用于异步追加内容到文件。
参数说明:
path: 要追加的文件路径。data: 要追加的数据。options (可选): 用于指定编码、模式和标志。默认值为 { encoding: 'utf8', mode: 0o666, flag: 'a' }。callback: 回调函数,如果追加成功,则这个函数没有参数;如果失败,则提供一个错误对象 err。JavaScriptconst fs = require('fs');
const additionalContent = '\nAppend this text.';
fs.appendFile('example.txt', additionalContent, (err) => {
if (err) {
console.error(err);
return;
}
console.log('Content appended successfully');
});
我们可以使用 fs.unlink 方法异步删除文件,或者 fs.unlinkSync 方法同步删除文件。
fs.unlinkSync 方法用于同步删除文件。
参数说明:
path: 要删除的文件的路径。JavaScriptconst fs = require('fs');
try {
fs.unlinkSync('example.txt');
console.log('File deleted successfully');
} catch (err) {
console.error(err);
}

fs.unlink 方法用于异步删除文件。
参数说明:
path: 要删除的文件的路径。callback: 回调函数,如果删除成功,则这个函数没有参数;如果失败,则提供一个错误对象 err。JavaScriptconst fs = require('fs');
fs.unlink('example.txt', (err) => {
if (err) {
console.error(err);
return;
}
console.log('File deleted successfully');
});
文件不存在时,出错

增加文件是否存在
TypeScriptconst fs = require('fs');
// 文件路径
const filePath = 'example.txt';
// 检查文件是否存在
fs.access(filePath, fs.constants.F_OK, (err) => {
if (err) {
console.error(`File doesn't exist.`);
} else {
// 文件存在,执行删除操作
fs.unlink(filePath, (err) => {
if (err) {
console.error(err);
return;
}
console.log('File deleted successfully');
});
}
});

我们可以使用 fs.readdirSync 方法同步读取目录内容,或者 fs.readdir 方法异步读取目录内容。
fs.readdirSync 方法用于同步读取目录的内容。
参数说明:
path: 要读取的目录的路径。options (可选): 用于指定编码。默认值为 utf8。JavaScriptconst fs = require('fs');
try {
const files = fs.readdirSync('./');
console.log(files);
} catch (err) {
console.error(err);
}

fs.readdir 方法用于异步读取目录的内容。
参数说明:
path: 要读取的目录的路径。options (可选): 用于指定编码。默认值为 utf8。callback: 回调函数,包含两个参数 (err, files),其中 err 是错误对象,当读取成功时为 null,files 是一个包含目录内容的数组。JavaScriptconst fs = require('fs');
fs.readdir('./', (err, files) => {
if (err) {
console.error(err);
return;
}
console.log(files);
});
Node.js 提供了强大的文件读写功能,可以通过同步和异步的方式进行文件操作。我们可以根据实际需求选择合适的方法来读取、写入、追加内容和删除文件。希望本文的详细讲解和示例代码能帮助你更好地理解和掌握Node.js文件读写操作。
本文作者:技术老小子
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!