nodeJS
来源:互联网 发布:安卓大尺度直播软件 编辑:程序博客网 时间:2024/06/04 00:41
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
- NodeJs
- nodejs
- nodejs
- nodejs
- nodejs
- nodejs
- nodejs
- nodejs
- nodejs
- NodeJs
- nodejs
- NodeJS
- nodejs
- nodejs
- nodejs
- NodeJS
- nodejs
- exKMP 学习小记
- TextView中动态显示某些值
- 最新十大web安全隐患-四年之后,OWASP发布新版本OWASP Top10 2017
- ubuntu 16.04下编译GLFW
- JAVA11.6作业
- nodeJS
- java.sql.SQLException: Value '0000-00-00 00:00:00' can not be represented as java.sql.Timestamp
- 深度优先搜索(dfs)
- vue.js中文社区Demo:vue全家桶,muse-ui
- 产品经理理解
- vue中v-text,v-html, v-model, {{}}之间的异同
- 辗转相除法
- CCF 201503-4 网络延时(树的直径,两次BFS)
- 在es6环境搭建中gulp安装遇到的问题