您的位置:首页 > Web前端 > Node.js

node 学习笔记 - fs 文件操作

2016-07-14 11:12 543 查看
跟着网上教程走,第一篇是 
process
 的一些操作,我觉得除了 
process.argv
 获取命令行参数, 
process.env
 获取环境变量,其他不太常用,至少我现阶段用不到,所以只是简单的测试了下,就直接到了 
File
System
 部分。

fs 是文件操作,我之前写爬虫,以及最后的文件数据整理,都是 php 做的,现在学了 node 之后肯定尽量 node 上了。

下面我就简单记录下常用的方法,反正用法,中文文档,百度上满大街都是。

结合 
File
System
 官网文档来学习。


Sync
后缀方法

打开文档发现每个方法都有两个,其中有一个就多了个 Sync 后缀。

什么是同步异步,事件驱动,非阻塞I/O 这些学术性的东西我就不多说了,自行搜索,这里只说他们最明显的区别。

比如 
fs.rename
 和 
fs.renameSync
,前者是要传入回调参数,当完成或遇到错误后会执行回调函数,而
Sync 同步方法,如果遇到错误了,直接抛出,导致js中断。

fs.rename('123.txt', '321.txt', function (err) {
if (err) {
console.log(err); // 遇到错误
}
console.log('完成');
});
try {
fs.renameSync('123.txt', '321.txt');
console.log('完成');
} catch(err) {
console.log(err); // 遇到错误
}


就是这么个区别,一个和谐报错,一个要手动 catch 错误信息。


文件读写

fs.read
fs.write
 和 
fs.readFile
fs.writeFile
fs.appendFile
 前者比较底层,需要结合 
fs.open
 打开文件得到文件句柄,然后基于文件句柄读写。

这不是很常用,所以直接说 
fs.readFile
fs.writeFile
fs.appendFile
 这三个方便的。

var fs = require('fs');

// 写入数据, 文件不存在会自动创建
fs.writeFile('123.txt', 'Hello Node!', function (err) {
if (err) throw err;
console.log('写入完成');
});

// 添加数据
fs.appendFile('123.txt', '添加数据,默认 utf8 格式', function (err) {
if (err) throw err;
console.log('添加完成');
});

// 读取数据
fs.readFile('123.txt', function (err, data) {
if (err) throw err;
console.log(data.toString());
});

好了,简洁明了,写入,添加,读取,都OK了。

不过我想大家也会跟我一样会有个疑问,
fs.readFile
 是全部载入,那如果文件很大怎么破?

而且没有按行读取,很多情况下会很麻烦。

这个就之后 Stream 部分细说了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: