node的fs模块
node的file system模块提供的api有同步和异步两种模式(大多数情况下都是用的异步方法,毕竟异步是node的特色,至于提供同步方法,可能应用程序复杂的时候有些场景使用同步会比较合适)。异步方法里回调函数的第一个参数往往是个err对象,最后一个参数是返回的操作结果。
node里面有很多模块,不少模块里面又有很多api,没必要短时间内一个个读完,因此只需要记住每个模块中最常用的一些api就好了。
*在使用同步模式的api时,error是即时抛出的,因此同步方法最好放在一个try{}catch{}块中。
*在使用异步模式的api时,如果一组任务之间是有先后次序的,要注意把下一个任务嵌在上一个任务的callback中。
*对文件读写时,可以使用相对路径,不过这个相对路径是相对于process.cwd()的。
Class: fs.ReadStream/fs.WriteStream:
.open()
.close()
.path
.bytesRead
--------------------------------------
Class: fs.Stats: fs.stat(), fs.lstat() and fs.fstat()的返回对象。
stats.isFile()
stats.isDirectory()
stats.isBlockDevice()
stats.isCharacterDevice()
stats.isSymbolicLink() (only valid with fs.lstat())
stats.isFIFO()
stats.isSocket()
--------------------------------------
fs.access(path[, mode], callback):
用于检测用户对path中的文件/文件夹的权限;其中mode有下面四个值:
fs.constants.F_OK 对调用该方法的进程可见
fs.constants.R_OK 可读
fs.constants.W_OK 可写
fs.constants.X_OK 可执行
文档不推荐在fs.open(), fs.readFile() or fs.writeFile()方法前使用access方法,推荐直接使用open/read/write即可。access方法应该在不直接使用path路径下的文件的时候调用。
--------------------------------------
fs.appendFile(file, data[, options], callback):给文档追加数据
fs.appendFile('message.txt', 'data to append', (err) => {
if (err) throw err;
console.log('The "data to append" was appended to file!');
});
data:可以是字符|buffer
option:obj|string:为obj时候可设置的参数有:encoding 、mode 、flag;为string时则指定编码格式如‘utf-8’
-------------------------------------
fs.createReadStream(path[, options]):返回一个readStream实例
option是如下的默认对象,如果opton是字符串,则只是指定编码格式:
const defaults = {
flags: 'r',
encoding: null,
fd: null,
mode: 0o666,
autoClose: true
};
*如果指定了fd,则path参数会被忽略;open事件也不会被触发。Note that fd should be blocking; non-blocking fds should be passed to net.Socket.
-----------------------------
fs.createWriteStream(path[, options]):参考createReadStream
-----------------------------------
fs.exists(path, callback):判断路径中的文件/文件夹是否存在
fs.exists('/etc/passwd', (exists) => {
console.log(exists ? 'it\'s there' : 'no passwd!');
});
文档推荐使用.access()而不是.exists(),因为access的回调里有err参数,而exists只是返回一个布尔值。另外也不推荐在.open/write/read文件之前使用exists方法检测。
RECOMMENDED:
fs.open('myfile', 'wx', (err, fd) => {
if (err) {
if (err.code === 'EEXIST') {
console.error('myfile already exists');
return;
}
throw err;
}
writeMyData(fd);
});
fs.open('myfile', 'r', (err, fd) => {
if (err) {
if (err.code === 'ENOENT') {
console.error('myfile does not exist');
return;
}
throw err;
}
readMyData(fd);
});
后面还有好几十个方法。。。罢了罢了先停一下。
node的fs模块的更多相关文章
- 【node】fs模块,文件和目录的操作
检查文件是否存在,查询文件信息 fs.stat() fs.stat('./server.js', function (err, stat) { if (stat && stat.isF ...
- node的fs模块使用————node
node的fs模块使用----node fs模块是调用文件的模块. var fs=require('fs'); //引用模块. //查看文件信息 fs.stat('index.txt',functio ...
- [Nodejs] node的fs模块
fs 模块 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作 API. Node 导入文件系统模块(fs).Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如 ...
- 从官网学习Node.js FS模块方法速查
最新文档请查看仓库 https://github.com/wangduandu... 1. File System 所有文件操作提供同步和异步的两种方式,本笔记只记录异步的API 异步方式其最后一个参 ...
- Node.js FS模块方法速查
1. File System 所有文件操作提供同步和异步的两种方式,本笔记只记录异步的API 异步方式其最后一个参数是回调函数.回调函数的第一个参数往往是错误对象,如果没有发生参数,那么第一个参数可能 ...
- Node.js——fs模块(文件系统),创建、删除目录(文件),读取写入文件流
/* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创 ...
- node之fs模块
前言 fs是filesystem的缩写,该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装.但是,这个模块几乎对所有操作提供异步和同步两种操作方式,供开发者选择. 一.文件读取 文 ...
- node中fs模块 - fs.open() fs.read() fs.write() fs.close()
var fs = require('fs') fs.open('./a.txt', 'a+', function(err, fd) { // 打开文件后 创建缓冲区放置数据 ), // 读取多少字节 ...
- Node 的fs模块
这个fs.readdir路径要加上__dirname 找到绝对路径 否则会报错 { Error: ENOENT: no such file or directory, scandir '/User ...
随机推荐
- css3 文本控制自动换行
text-overflow:ellipsis; white-space:nowrap; overflow:hidden;
- Scala教程之:scala的参数
文章目录 默认参数值 命名参数 scala的参数有两大特点: 默认参数值 命名参数 默认参数值 在Scala中,可以给参数提供默认值,这样在调用的时候可以忽略这些具有默认值的参数. def log(m ...
- java基于OpenCV的人脸识别
基于Java简单的人脸和人眼识别程序 使用这个程序之前必须先安装配置OpenCV详细教程见:https://www.cnblogs.com/prodigal-son/p/12768948.html 注 ...
- 字符串translate方式实现
在爬取百度图片的时候,发现百度图片做了反爬虫处理,在网上找到当前还能跑通的教程实例:python3多线程下载百度图片搜索结果. 在分析代码的过程中,发现作者对爬取的objURL的解码是通过字符串的tr ...
- 《Splunk智能运维实战》——1.7 为本书加载样本数据
本节书摘来自华章计算机<Splunk智能运维实战>一书中的第1章,第1.7节,作者 [美]乔史·戴昆(Josh Diakun),保罗R.约翰逊(Paul R. Johnson),德莱克·默 ...
- 在独立的 Root 和 Home 硬盘驱动器上安装 Ubuntu
安装 Linux 系统时,可以有两种不同的方式.第一种方式是在一个超快的固态硬盘上进行安装,这样可以保证迅速开机和高速访问数据.第二种方式是在一个较慢但很强大的普通硬盘驱动器上安装,这样的硬盘转速快并 ...
- [故障解决]图文:windows apache无法启用 端口被占用
windows apache无法启用 端口被占用 1 XAMPP Error: Apache shutdown unexpectedly 无法启动apache,显示的log为: 2 查了一下端口, 通 ...
- .NET Micro Framework 4.2 beta 源码探析
.NET Micro Framework 4.2 beta发布已经有一段时间了,一直没有腾出时间研究,昨天因为LWIP协议栈的原因(感觉上一个版本有点问题)刚 下了代码,所以抽空研究了一下. ...
- 数学--数论--HDU 12151七夕节 Plus (因子和线性筛)
Problem Description 七夕节那天,月老来到数字王国,他在城门上贴了一张告示,并且和数字王国的人们说:"你们想知道你们的另一半是谁吗?那就按照告示上的方法去找吧!" ...
- 纯django开发最完美博客
2020年5月打造最时尚博客系统教程 为了学习速度,集中精力学习django和博客开发, 没有使用其它框架,也没有使用css预处理等 这样学起来最方便, 博客前后端都完成, www.duanshuil ...