node 学习笔记 - fs 文件操作
2016-07-14 11:12
543 查看
跟着网上教程走,第一篇是
fs 是文件操作,我之前写爬虫,以及最后的文件数据整理,都是 php 做的,现在学了 node 之后肯定尽量 node 上了。
下面我就简单记录下常用的方法,反正用法,中文文档,百度上满大街都是。
结合
打开文档发现每个方法都有两个,其中有一个就多了个 Sync 后缀。
什么是同步异步,事件驱动,非阻塞I/O 这些学术性的东西我就不多说了,自行搜索,这里只说他们最明显的区别。
比如
Sync 同步方法,如果遇到错误了,直接抛出,导致js中断。
fs.rename('123.txt', '321.txt', function (err) {
if (err) {
console.log(err); // 遇到错误
}
console.log('完成');
});
就是这么个区别,一个和谐报错,一个要手动 catch 错误信息。
这不是很常用,所以直接说
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了。
不过我想大家也会跟我一样会有个疑问,
而且没有按行读取,很多情况下会很麻烦。
这个就之后 Stream 部分细说了。
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 部分细说了。
相关文章推荐
- zookeeper 之znode 节点
- zookeeper 之znode 节点
- zookeeper 之znode 节点
- Ubuntu下提示/usr/bin/env: node: 没有那个文件或目录
- nodejs经典高并发
- 使用nvm利器,管理node版本
- node.js 第一个程序
- Nodejs npm的常用指令
- 'node-gyp rebuild'解决办法(ubuntu)
- ubuntu下nvm,node以及npm的安装与使用
- NodeJs从入门到高手常用资源查询
- leetcode---Populating Next Right Pointers in Each Node---二叉树、广搜
- ubuntu 安装nodejs 4.X版本以上
- 开始node之旅
- nodejs javascript 实现随机数种子的几种方法
- node 单线程异步非阻塞
- node 单线程异步非阻塞
- zookeeper可视化监控node-zk-browser
- 集群管理 secondaryNameNode和NameNode(转)
- NodeJS学习系列课程笔记(NodeJs Assert断言测试)