nodeJS - 5 - fs文件系统
2017-11-23 15:42
555 查看
fs 文件系统
说明
fs是
filesystem的缩写,此模块提供本地文件的读写能力,几乎对所有模块都提供异步和同步两种操作方式,异步方法的最后一个参数都是一个回调函数,传递给回调函数的参数取决于具体方法,但回调函数的第一个参数都会保留给异常;当使用同步方法时,任何异常都会被立即抛出
参考
Node.js 文档
JavaScript 标准参考教程 Node.js
1. 可访问性检查 access() accessSync()
旧版使用exists()判断给定路径是否存在 最新版已废弃,一共三个参数:
1)path: 指定文件或者目录
2)mode: 可选参数,指定要执行的可访问性检查,默认查询文件是否存在
3)callback: 回调函数,参数 err
不建议在调用 fs.open() 、 fs.readFile() 或 fs.writeFile() 之前使用 fs.access() 检查一个文件的可访问性。 如此处理会造成紊乱情况,因为其他进程可能在两个调用之间改变该文件的状态。 作为替代,用户代码应该直接打开/读取/写入文件,当文件无法访问时再处理错误。
const fs = require('fs'); fs.access('./test.js', function (err) { console.log(err ? '不可访问' : '可访问'); }) fs.accessSync('./text.js'); // 直接报错
2. 打开文件 open() openSync()
参数:1)path: 要打开的文件
2)flags: 以什么模式打开文件 r 读取模式 r+ 读写模式…
3)mode: 可选,文件模式
4)callback: 回调函数,参数 err fd
const fs = require('fs'); fs.open('./router.js', 'a+', function (err, fd) { if (!err) { console.log(fd); } else { console.log(err); } }) fs.openSync('./router.js', 'a+');
3. 读取文件 readFile(),readFileSync()
三个参数,1)文件路径,可以是绝对路径,也可以是相对路径(相对于当前进程的路径);
2)可以省略的参数,可以设置文件编码;
3)回调函数,提供两个参数 err 错误信息和 data 读取的数据
fs.readFile('./output.txt', 'utf-8', function (err, data) { console.log('err', err); console.log('data', data); }) const fileData = fs.readFileSync('./output.txt', 'utf-8');
4. 写入文件 writeFile(),writeFileSync()
写入数据到文件,如果文件已经存在则替代文件,可以有四个参数:1)file: 文件名或者文件描述符;
2)要写入的数据;
3)可选参数,一些配置信息;
4)回调函数,参数 err 错误信息
const fs = require('fs'); fs.writeFile('./op.js', 'const a = "a";', 'utf-8', function (err) { console.log(err); // null }) fs.writeFileSync('./op.js', 'const b = "a";', 'utf-8');
5. 追加数据到文件 appendFile() appendFileSync()
追加数据到文件,如果文件不存在则创建文件1)file: 文件名或者文件描述符
2)data: 要写入的数据
3)options: 配置
4)callback: 回调,参数 err
const fs = require('fs'); fs.appendFile('./test.txt', 'this is append', function (err) { console.log(err ? '失败' : '成功'); }) fs.appendFileSync('./test.txt', 'this is appendSync');
6. 删除文件 unlink() unlinkSync()
1) 要删除的文件路径2)callback: 回调,参数 err
const fs = require('fs'); fs.unlink('./output/output.txt', function (err) { console.log(err); }) fs.unlinkSync('./output/output.txt');
7. 创建目录 mkdir() mkdirSync()
三个参数1)path: 要创建的目录名
2)选填,权限值
3)callback: 回调函数,参数 err
const fs = require('fs'); fs.mkdir('./output', function (err) { console.log(err); }) fs.mkdirSync('./output'); // 直接报错,重复创建相同目录
8. 读取目录 readdir() readdirSync()
三个参数1)path 目录路径
2)options 配置项,可配置编码
3)callback 回调,参数: err 错误信息;files:目录下文件名数组
const fs = require('fs'); fs.readdir('./', function (err, files) { console.log(err || files); }) console.log(fs.readdirSync('./'));
9. 查询文件目录具体信息 stat() statSync()
stat方法的参数是一个文件或目录,它产生一个对象,该对象包含了该文件或目录的具体信息。我们往往通过该方法,判断正在处理的到底是一个文件,还是一个目录。1)path: 目录路径
2)callback: 回调,参数:err 错误信息;stats 目录具体信息对象
stats 对象的属性
stats.isFile()是否是文件
stats.isDirectory()是否是目录
atime、atimeMs访问时间
mtime、mtimeMs修改时间
ctime、ctimeMs变化时间
birthtime、birthtimeMs创建时间
fs.readdir('./', function (err, files) { if (!err) { files.forEach((file) => { fs.stat('./' + file, function (error, stats) { if (!error) { console.log(file, 'is FILE', stats.isFile()); console.log(file, 'is DIR', stats.isDirectory()); } }) }) } }) const stats = fs.statSync('./');
10. 移除文件夹 rmdir() rmdirSync()
1)path: 文件夹路径, 注意删除时,文件夹内不能有文件2)callback: 回调,参数 err
const fs = require('fs'); fs.rmdir('./output', function (err) { console.log(err || '成功'); }) fs.rmdirSync('./output');
11. 监视文件变化 watchFile() unwatchfile() watch()
watchFile监听一个文件,如果该文件发生变化,就会自动触发回调函数;
unwatchfile停止监视文件变化
watchFile()
1)filename: 文件名
2)options:可选配置:persistent 表示进程是否继续;interval 轮询时间间隔
3)listener: 监听函数,参数:current 当前文件状态; prev 之前的文件状态
unwatchfile()
1)filename: 文件名,停止监听此文件的变化
2)listener:可选,表示移除特定的监听器,否则移除所有的监听器
watch()比
watchFile、
unwatchfile更高效的监听方法
1)filename: 文件或者目录
2)options: 可选配置项,persistent 表示进程是否继续;recursive 是否递归子目录,监视全部子目录,默认 false;encoding 文件编码
3)listener:监听函数, 参数 eventType:
rename或者
change; filename: 触发事件的文件名
fs.watch API 不是 100% 跨平台一致的,且在某些情况下不可用。递归选项只支持 macOS 和 Windows。
const fs = require('fs'); fs.watchFile('./test.txt', function (curr, prev) { console.log(curr); console.log('+++++++++ ========= ==+++++++++++'); console.log(prev); fs.unwatchFile('./test.txt'); // 一次修改就停止监听 }) // ================================================ // const fs = require('fs'); const a = fs.watch('./test.txt', function (eventType, fileName) { console.log(eventType); console.log('====== =++++++++ == ========'); console.log(fileName); this.close(); // close 方法停止监视 })
12. 创建可读流和可写流 createReadStream() createWriteStream()
createReadStream用于返回一个新建的
ReadStream对象,参数如下:
1)path: 文件名
2)options:配置
createWriteStream用于返回一个新建的
WriteStream对象,参数如下:
1)path:目标文件路径
2)options:配置
fs.createReadStream('text.txt'); fs.createWriteStream('text.txt');
相关文章推荐
- 详解nodeJs文件系统(fs)与流(stream)
- nodeJS之fs文件系统
- NODEJS-fs模块操作文件系统
- nodeJS之fs文件系统
- 【nodejs】 文件系统(fs) 之读写文件
- 简单的nodejs 文件系统(fs)读写
- NodeJs——(6)文件系统 fs
- nodejs系列(6)文件系统处理模块fs
- FSEventStreamCreate监视文件系统改变通知
- Nodejs学习 4 -- 文件系统file
- nodejs File System 文件系统操作函数分类
- ext2、ext3、ext4、brtfs文件系统区别
- 详解Nodejs 通过 fs.createWriteStream 保存文件
- 【分析】Ceph文件系统修复机制cephfs-data-scan(2)
- Node.js:fs文件系统模块
- TRTOS的TQFS文件系统文件驱动层代…
- 在nodeJS中操作文件系统(二)
- nodejs 文件-fs
- 【分析】Ceph文件系统修复机制cephfs-data-scan(3)
- nodejs 文件系统