Node.js fs模块文件操作完整指南:读写删除移动与监听
本文详细介绍Node.js中fs模块的核心功能,涵盖文件的异步与同步读写、追加、删除、移动及文件夹操作。重点解析readFile、writeFile、open、appendFile、unlink、rmdir、mkdir及watch等API的参数与用法,并提供代码示例说明如何正确处理文件流与监听事件。
Node.js fs模块概述
Node.js版本:4.4.4
fs
文件系统模块封装了标准的POSIX文件I/O操作。Node.js的fs模块中,所有方法均提供异步和同步两种版本供开发者选择。
文件移动与图片处理
图片的复制与粘贴
实现图片复制与粘贴时,需创建一个可读流和一个写入流,并通过管道(pipe)将数据从源传输到目标。
var fileReadStream = fs.createReadStream(sourcePath);
var fileWriteStream = fs.createWriteStream(targetPath);
fileReadStream.pipe(fileWriteStream);
//监听关闭事件得知执行完成
fileWriteStream.on('close', function() {
console.log('移动成功!');
})
文件读取操作
读文件(fs.readFile)
定义:fs.readFile(filename[, options], callback)
参数说明如下:
- filename:{String} 文件名或文件路径
- options:{Object} 可选参数配置
encoding:{String | Null} 默认值为null,指定编码方式
flag:{String} 默认值为'r',定义文件打开的行为(如只读、读写等)
- callback:{Function} 回调函数,用于处理读取结果或错误
var fs = require('fs');
//读取文件
fs.readFile('../lianxi/child_process.js',{
encoding:'utf-8',
flag:'r'
}, function(err,data){
if(err) throw err;
console.log(data);
});
若读取文件时未指定编码方式,返回的数据将以Buffer形式呈现。
<Buffer 76 61 72 20 63 68 69 6c 64 5f 70 72 6f 63 65 73 73 20 3d 20 72 65 71 75 69 72 65 28 27 63 68 69 6c 64 5f 70 72 6f 63 65 73 73 27 29 3b 0d 0a 76 61 72 ... >
当指定编码为utf-8时,返回的数据将转换为字符串形式。具体示例如下:
var child_process = require('child_process');...
文件写入操作
写文件(fs.writeFile)
定义:fs.writeFile(filename, data[, options], callback)
参数说明如下:
- filename:{String} 文件名或路径
- data:{String | Buffer} 要写入的数据内容
- options:{Object} 可选配置对象
encoding:{String | Null} 默认值为'utf8' mode:{Number} 默认值为438(八进制表示为0666) flag:{String} 默认值为'w'
- callback {Function} 回调函数
//写入文件
fs.writeFile('../lianxi/child_process.js','[zqz]要写入的数据字符串或者buffer',{
encoding:'utf8',
mode:438,
flag:'w'
},function(err){
})
注意:异步写入文件时,若目标文件已存在,新内容将直接替换原有内容。
文件打开与追加
打开文件(fs.open)
定义:fs.open(path, flags[, mode], callback)
参数说明如下:
- path: 文件路径
- flags: 指定文件打开的行为模式
- mode: 设置文件权限,创建文件时的默认权限为0666(即读写权限)。
- callback: 回调函数,处理打开结果或错误。
//打开文件
fs.open('../lianxi/child_process.js','r+',0666,function(err,data){
})
给文件添加数据(fs.appendFile)
定义:fs.appendFile(filename, data[, options], callback)
参数说明如下:
- filename:{String} 文件名或路径
- data:{String | Buffer} 要追加的数据内容
- options:{Object} 可选配置对象
encoding {String | Null} 默认值为'utf8' mode {Number} 默认值为438(八进制表示为0666) flag {String} 默认值为'a'
- callback {Function} 回调函数
//给文件添加数据
fs.appendFile('../lianxi/child_process.js', '异步添加的字符串或buffer', {
encoding:'utf8',
mode:438,
flag:'a'
}, function(err){
});
注意:异步追加数据时,若目标文件不存在,系统将自动创建新文件。
文件与文件夹的删除及创建
删除文件(fs.unlink)
定义:fs.unlink(path, callback)
var fs = require('fs');
fs.unlink('./t/index.html',function (err) {
if(err) throw err;
console.log('成功')
})
创建文件(fs.open)
定义:fs.open(path, flags[, mode], callback)
除了其他方法外,也可以利用fs.open来创建文件。
fs.open("test.txt", "w",function (err) {
});
删除文件夹(fs.rmdir)
定义:fs.rmdir(path, callback)
fs.rmdir('./t/a',function (err) {
if(err) throw err;
console.log('成功')
})
创建文件夹(fs.mkdir)
定义:fs.mkdir(path[, mode], callback)
参数:mode 默认值为0777。
fs.mkdir('./t/a',0777,function (err) {
if(err) throw err;
console.log('成功')
})
文件监听机制
文件监听(fs.watch fs.watchFile)
定义:fs.watch(filename[, options][, listener]) 定义:fs.watchFile(filename[, options], listener)
fs.watch('test.js', function (event, filename) {
});
fs.watchFile('test.js', function(curr, prev){
});
flags
| Flag | 描述 |
|---|---|
| r | 以读取模式打开文件。如果文件不存在抛出异常。 |
| r+ | 以读写模式打开文件。如果文件不存在抛出异常。 |
| rs | 以同步的方式读取文件。 |
| rs+ | 以同步的方式读取和写入文件。 |
| w | 以写入模式打开文件,如果文件不存在则创建。 |
| wx | 类似 'w',但是如果文件路径存在,则文件写入失败。 |
| w+ | 以读写模式打开文件,如果文件不存在则创建。 |
| wx+ | 类似 'w+', 但是如果文件路径存在,则文件读写失败。 |
| a | 以追加模式打开文件,如果文件不存在则创建。 |
| ax | 类似 'a', 但是如果文件路径存在,则文件追加失败。 |
| a+ | 以读取追加模式打开文件,如果文件不存在则创建。 |
| ax+ | 类似 'a+', 但是如果文件路径存在,则文件读取追加失败。 |
以上所述是小编给大家介绍的NodeJs的fs读写删除移动监听,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对本站网站的支持!
Node.js中使用path模块获取文件名
2026-11-05 15:15:15
Node.js中url模块与querystring模块处理查询字符串的区别
2026-11-05 15:04:45
JavaScript(JS)主要用来做什么
2026-11-05 10:10:47
怎么修改Node.js和npm的全局安装路径与缓存目录
2026-11-04 19:48:28
NW.js 常见问题排查:Node 模块加载失败与版本兼容解决
2026-11-04 11:22:45
