在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 许可协议。转载请注明出处!