Node.js文件操作详解:读写、移动与目录操作
版权申诉
191 浏览量
更新于2024-07-06
收藏 17KB DOCX 举报
"从零学习Node.js之文件操作(三)"
在Node.js中,文件操作是核心功能之一,尤其对于开发工作来说至关重要。本资源详细介绍了如何使用Node.js进行文件和目录的操作,通过实例帮助初学者理解相关API的用法。
一、文件操作
1.1 读取文件
在Node.js中,读取文本文件,如`.txt`, `.js`, `.json`等,可以使用`fs.readFile`方法。例如:
```javascript
var fs = require('fs');
fs.readFile('./data.txt', 'utf-8', function(err, data) {
if (err) throw err;
console.log(data);
});
```
这段代码会读取名为`data.txt`的文件,并以`utf-8`编码解析其内容。
1.2 写入文件
写入文件同样简单,只需调用`fs.writeFile`或`fs.appendFile`。例如,要将字符串写入文件:
```javascript
fs.writeFile('./output.txt', 'Hello, World!', function(err) {
if (err) throw err;
console.log('文件已写入成功');
});
```
1.3 创建或重命名文件
使用`fs.rename`方法可以创建新文件或重命名现有文件。它将`oldname`文件移动到`newname`路径下,如果`oldname`和`newname`相同,则执行重命名操作。
二、目录操作
2.1 读取目录中的文件和子目录
使用`fs.readdir`方法可以获取指定目录中的文件和子目录列表。例如:
```javascript
fs.readdir('./myDir', function(err, files) {
if (err) throw err;
console.log(files);
});
```
这将列出`myDir`目录下的所有文件和子目录名称。
2.2 删除目录
要删除空目录,可以使用`fs.rmdir`,对于非空目录,可以先递归删除其中的文件,再删除目录本身。如果需要删除整个目录及其内容,可以使用`fs.rmSync`(Node.js v14+)或第三方库如`rimraf`。
2.3 获取文件或目录信息
`fs.stat`用于获取文件或目录的详细信息,包括创建时间、修改时间、文件大小等。例如:
```javascript
fs.stat('./test.js', function(err, stats) {
if (err) {
console.log('路径错误');
throw err;
}
console.log(stats);
console.log('isFile: ' + stats.isFile()); // 是否为文件
console.log('isDirectory: ' + stats.isDirectory()); // 是否为目录
});
```
三、综合运用
3.1 遍历目录中的所有文件
为了获取目录中所有文件的名称,可以使用递归方法。当遇到文件时,将其添加到结果数组中;如果遇到目录,则继续遍历该目录的子文件。以下是一个简单的示例:
```javascript
function readAllFiles(dir, result = []) {
fs.readdir(dir, function(err, files) {
if (err) throw err;
files.forEach(function(file) {
const filePath = path.join(dir, file);
fs.stat(filePath, function(err, stats) {
if (err) throw err;
if (stats.isDirectory()) {
readAllFiles(filePath, result);
} else {
result.push(filePath);
}
});
});
});
return result;
}
readAllFiles('./myDir').then(console.log);
```
此函数会递归地读取`myDir`目录及其所有子目录,并返回一个包含所有文件路径的数组。
Node.js提供了丰富的文件和目录操作API,开发者可以通过这些API轻松地处理文件系统任务。通过理解和实践上述示例,开发者可以掌握基本的文件操作技巧,从而在实际项目中更加得心应手。
2022-01-22 上传
2022-01-22 上传
2023-05-31 上传
2023-03-20 上传
2023-04-23 上传
2023-03-20 上传
2023-06-06 上传
2023-03-20 上传
2023-07-28 上传
![](https://profile-avatar.csdnimg.cn/99a985a0db404a9e81ed0e697bef6f4b_qq_38179036.jpg!1)
惚如远行客
- 粉丝: 0
- 资源: 5209
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解