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模块的更多相关文章

  1. 【node】fs模块,文件和目录的操作

    检查文件是否存在,查询文件信息 fs.stat() fs.stat('./server.js', function (err, stat) { if (stat && stat.isF ...

  2. node的fs模块使用————node

    node的fs模块使用----node fs模块是调用文件的模块. var fs=require('fs'); //引用模块. //查看文件信息 fs.stat('index.txt',functio ...

  3. [Nodejs] node的fs模块

    fs 模块 Node.js 提供一组类似 UNIX(POSIX)标准的文件操作 API. Node 导入文件系统模块(fs).Node.js 文件系统(fs 模块)模块中的方法均有异步和同步版本,例如 ...

  4. 从官网学习Node.js FS模块方法速查

    最新文档请查看仓库 https://github.com/wangduandu... 1. File System 所有文件操作提供同步和异步的两种方式,本笔记只记录异步的API 异步方式其最后一个参 ...

  5. Node.js FS模块方法速查

    1. File System 所有文件操作提供同步和异步的两种方式,本笔记只记录异步的API 异步方式其最后一个参数是回调函数.回调函数的第一个参数往往是错误对象,如果没有发生参数,那么第一个参数可能 ...

  6. Node.js——fs模块(文件系统),创建、删除目录(文件),读取写入文件流

    /* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创 ...

  7. node之fs模块

    前言 fs是filesystem的缩写,该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装.但是,这个模块几乎对所有操作提供异步和同步两种操作方式,供开发者选择. 一.文件读取 文 ...

  8. node中fs模块 - fs.open() fs.read() fs.write() fs.close()

    var fs = require('fs') fs.open('./a.txt', 'a+', function(err, fd) { // 打开文件后 创建缓冲区放置数据 ), // 读取多少字节 ...

  9. Node 的fs模块

    这个fs.readdir路径要加上__dirname  找到绝对路径  否则会报错 { Error: ENOENT: no such file or directory, scandir '/User ...

随机推荐

  1. 教你如何快速让浏览器兼容es6

    写在正文前,本来这一节的内容应该放在第二节更合适,因为当时就有同学问ES6的兼容性如何,如何在浏览器兼容ES6的特性,这节会介绍一个抱砖引玉的操作案例. 为什么ES6会有兼容性问题? 由于广大用户使用 ...

  2. Python模块---制作新冠疫情世界地图()

    目录 pyecharts模块 简介 安装pyecharts 测试pyecharts模块 pyecharts实战:绘制新冠肺炎疫情地图 需求分析 请求数据 提取数据 处理数据 制作可视化地图 设置可视化 ...

  3. <cstring>中常用的两个函数memset()和memcpy()

    <cstring>是c++对c中的<string.h>进行了重写,这两个头文件中的函数用法是一样的,所以在用的时候包含哪个头文件都行.下面介绍一下 <cstring> ...

  4. python爬虫(1)requests库

    在pycharm中安装requests库的一种方法 首先找到设置 搜索然后安装,蓝色代表已经安装 requests库中的get请求 与HTTP协议相对应,requests库也有七种请求方式. 获取ur ...

  5. Visual Studio 2015 + Windows 2012 R2, c++/cli Array::Sort() 抛出异常

    在Windows7上编译就是正常. 可见Windows2012 R2缺少了一些东西. 另外,有一个现象一样,但原因不一样的 https://stackoverflow.com/questions/46 ...

  6. GitHub 被指审查内容,著名“换脸”开源项目 deepfake 遭限制访问

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   昨天 Hacker News 上一条关于 deepfake 开源项目的帖子(https://news.ycombi ...

  7. 刚听完CSDN总裁蒋涛先生的学术报告

    主题: 二十年程序人生和我的人才观 第一次参加所谓的"学术报告", 但感觉更多的是蒋总在跟我们分享他个人的成长经验. 按蒋总的话说, 他已经从2000年开始不碰怎么技术了, 所以个 ...

  8. servlet温故知新

    重新学习了一遍servlet-api的文档,做一些记录. 有道云的笔记直接复制到博客上格式会乱,因此直接放上有道云的链接:http://note.youdao.com/noteshare?id=915 ...

  9. LNMP企业应用部署全过程(基于DEDE后台)

    系统环境说明: os:centos 5.6 nginx:nginx-1.0.11 php:php-5.3.9 mysql:mysql-5.5.20 文档导读: 一 准备工作 二 基础软件包安装 三 安 ...

  10. 算法竞赛进阶指南--在单调递增序列a中查找>=x的数中最小的一个(即x或x的后继)

    while (l < r) { int mid = (l + r) / 2; if (a[mid] >= x) r = mid; else l = mid + 1; }