总结Node.js中9种fs模块文件操作方法(文件夹递归删除知识)
文件操作是Node.js的一个重要功能。fs模块是Node.js中实现文件I/O的核心模块,提供了很多文件操作方法。本文将总结fs模块中的9种常用文件操作方法,并详细说明每种方法的用法和参数。
1. fs.stat
fs.stat
方法用于获取文件/目录的基本信息,包括文件大小、创建时间、修改时间、访问时间等。其定义如下:
fs.stat(path, callback)
其中 path
参数为文件或目录的路径,callback
参数为回调函数。回调函数的第一个参数为错误信息,第二个参数为文件/目录的状态信息(fs.Stats
对象)。
示例:
const fs = require('fs');
fs.stat('/path/to/file', (err, stats) => {
if (err){
console.error(err);
return;
}
console.log(stats.isFile()); // 是否是文件
console.log(stats.isDirectory()); // 是否是目录
console.log(stats.size); // 文件/目录大小(单位为字节)
});
2. fs.unlink
fs.unlink
方法用于删除文件。其定义如下:
fs.unlink(path, callback)
其中 path
参数为文件的路径,callback
参数为回调函数。回调函数的第一个参数为错误信息。
示例:
const fs = require('fs');
fs.unlink('/path/to/file', (err) => {
if (err) {
console.error(err);
return;
}
console.log('文件删除成功');
});
3. fs.readdir
fs.readdir
方法用于读取目录下的文件列表。其定义如下:
fs.readdir(path, callback)
其中 path
参数为目录的路径,callback
参数为回调函数。回调函数的第一个参数为错误信息,第二个参数为目录下的文件列表数组。
示例:
const fs = require('fs');
fs.readdir('/path/to/directory', (err, files) => {
if (err) {
console.error(err);
return;
}
files.forEach(file => {
console.log(file);
});
});
4. fs.readFile
fs.readFile
方法用于读取文件的内容。其定义如下:
fs.readFile(file[, options], callback)
其中 file
参数为文件的路径,options
参数为可选的读取选项,callback
参数为回调函数。回调函数的第一个参数为错误信息,第二个参数为文件内容(Buffer 对象)。
示例:
const fs = require('fs');
fs.readFile('/path/to/file', (err, data) => {
if (err){
console.error(err);
return;
}
console.log(data.toString());
});
5. fs.writeFile
fs.writeFile
方法用于写入文件内容。如果文件不存在,则会创建新文件,如果存在,则会覆盖原有内容。其定义如下:
fs.writeFile(file, data[, options], callback)
其中 file
参数为文件的路径,data
参数为要写入的内容,options
参数为可选的写入选项,callback
参数为回调函数。回调函数的第一个参数为错误信息。
示例:
const fs = require('fs');
fs.writeFile('/path/to/file', 'Hello world', (err) => {
if (err) {
console.error(err);
return;
}
console.log('文件写入成功');
});
6. fs.appendFile
fs.appendFile
方法用于追加文件内容。如果文件不存在,则会创建新文件,如果存在,则会在原有内容后面追加新内容。其定义如下:
fs.appendFile(file, data[, options], callback)
其中 file
参数为文件的路径,data
参数为要追加的内容,options
参数为可选的写入选项,callback
参数为回调函数。回调函数的第一个参数为错误信息。
示例:
const fs = require('fs');
fs.appendFile('/path/to/file', 'Hello world', (err) => {
if (err) {
console.error(err);
return;
}
console.log('追加内容成功');
});
7. fs.mkdir
fs.mkdir
方法用于创建目录。其定义如下:
fs.mkdir(path[, options], callback)
其中 path
参数为目录的路径,options
参数为可选的创建选项,callback
参数为回调函数。回调函数的第一个参数为错误信息。
示例:
const fs = require('fs');
fs.mkdir('/path/to/directory', (err) => {
if (err) {
console.error(err);
return;
}
console.log('目录创建成功');
});
8. fs.rmdir
fs.rmdir
方法用于删除空目录。如果目录不为空,则会抛出错误。其定义如下:
fs.rmdir(path, callback)
其中 path
参数为目录的路径,callback
参数为回调函数。回调函数的第一个参数为错误信息。
示例:
const fs = require('fs');
fs.rmdir('/path/to/directory', (err) => {
if (err) {
console.error(err);
return;
}
console.log('目录删除成功');
});
9. fs.rmdirSync
fs.rmdirSync
方法与 fs.rmdir
方法类似,都是用于删除空目录。但 fs.rmdirSync
是同步方法,会阻塞进程,直到目录删除成功或抛出错误。其定义如下:
fs.rmdirSync(path)
其中 path
参数为目录的路径。
示例:
const fs = require('fs');
try {
fs.rmdirSync('/path/to/directory');
console.log('目录删除成功');
} catch (err) {
console.error(err);
}
文件夹递归删除知识
如果要删除整个目录(包括目录下的所有文件和子目录),可以使用递归方式,即先删除子目录,再删除父目录。下面是一种实现方式:
const fs = require('fs');
const path = require('path');
function deleteFolderRecursive(path) {
if (fs.existsSync(path)) {
fs.readdirSync(path).forEach((file, index) => {
const curPath = path + '/' + file;
if (fs.statSync(curPath).isDirectory()) {
deleteFolderRecursive(curPath);
} else {
fs.unlinkSync(curPath);
}
});
fs.rmdirSync(path);
console.log('目录删除成功');
}
}
deleteFolderRecursive('/path/to/directory');
上述代码将先遍历目录下的所有文件和子目录,如果是目录,则递归调用本函数,否则直接删除文件,最后删除当前目录。
结语
本文总结了fs模块中的9种常用文件操作方法,并提供了详细的示例说明。通过学习这些方法,可以轻松处理文件/目录的读写、创建、删除等操作。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:总结Node.js中9种fs模块文件操作方法(文件夹递归删除知识) - Python技术站