博客
关于我
nodeJS - 5 - fs文件系统
阅读量:628 次
发布时间:2019-03-14

本文共 5105 字,大约阅读时间需要 17 分钟。

Node.js 文件系统模块操作指南

1. 如何检查文件的可访问性?

FS 模块提供了两种检查文件可访问性的方法:access() 和 accessSync()。

语法

fs.access(path, callback)fs.accessSync(path)

参数

  • path:指定要检查的文件或目录路径
  • mode(可选):执行检查的操作,默认为检查文件是否存在
  • callback:回调函数,接收错误信息和返回结果
  • 注意事项

    • 不建议在调用 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. 如何打开文件?

    FS 模块提供了两种打开文件的方法:open() 和 openSync()。

    语法

    fs.open(path, flags, mode, callback)fs.openSync(path, flags, mode)

    参数

  • path:目标文件路径
  • flags:文件打开模式(如 r 读取模式、r+ 读写模式等)
  • mode(可选):文件操作模式
  • callback:回调函数,接收文件描述符和错误信息
  • 示例

    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. 如何读取文件?

    FS 模块提供了两种读取文件的方法:readFile() 和 readFileSync()。

    语法

    fs.readFile(path, encoding, callback)fs.readFileSync(path, encoding)

    参数

  • path:目标文件路径
  • encoding(可选):文件编码格式,默认为 utf-8
  • callback:回调函数,接收读取结果和错误信息
  • readFileSync:同步读取文件的方法
  • 示例

    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. 如何写入文件?

    FS 模块提供了两种写入文件的方法:writeFile() 和 writeFileSync()。

    语法

    fs.writeFile(file, data, encoding, callback)fs.writeFileSync(file, data, encoding)

    参数

  • file:目标文件路径或文件描述符
  • data:要写入的数据
  • encoding(可选):文件编码格式,默认为 utf-8
  • callback:回调函数,接收错误信息
  • writeFileSync:同步写入文件的方法
  • 示例

    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. 如何追加数据到文件?

    FS 模块提供了两种追加数据到文件的方法:appendFile() 和 appendFileSync()。

    语法

    fs.appendFile(file, data, callback)fs.appendFileSync(file, data)

    参数

  • file:目标文件路径或文件描述符
  • data:要追加的数据
  • callback:回调函数,接收错误信息
  • appendFileSync:同步追加数据的方法
  • 示例

    const fs = require('fs');fs.appendFile('./test.txt', 'this is append', function (err) {    console.log(err ? '失败' : '成功');});fs.appendFileSync('./test.txt', 'this is appendSync');

    6. 如何删除文件?

    FS 模块提供了两种删除文件的方法:unlink() 和 unlinkSync()。

    语法

    fs.unlink(path, callback)fs.unlinkSync(path)

    参数

  • path:要删除的文件路径
  • callback:回调函数,接收错误信息
  • unlinkSync:同步删除文件的方法
  • 示例

    const fs = require('fs');fs.unlink('./output/output.txt', function (err) {    console.log(err);});fs.unlinkSync('./output/output.txt');

    7. 如何创建目录?

    FS 模块提供了两种创建目录的方法:mkdir() 和 mkdirSync()。

    语法

    fs.mkdir(path, callback)fs.mkdirSync(path)

    参数

  • path:要创建的目录路径
  • callback:回调函数,接收错误信息
  • mkdirSync:同步创建目录的方法
  • 示例

    const fs = require('fs');fs.mkdir('./output', function (err) {    console.log(err);});fs.mkdirSync('./output'); // 直接报错,重复创建相同目录

    8. 如何读取目录?

    FS 模块提供了两种读取目录的方法:readdir() 和 readdirSync()。

    语法

    fs.readdir(path, callback)fs.readdirSync(path)

    参数

  • path:目标目录路径
  • callback:回调函数,接收目录文件名数组和错误信息
  • readdirSync:同步读取目录的方法
  • 示例

    const fs = require('fs');fs.readdir('./', function (err, files) {    console.log(err || files);});console.log(fs.readdirSync('./'));

    9. 如何查询文件目录具体信息?

    FS 模块提供了两种查询文件或目录详细信息的方法:stat() 和 statSync()。

    语法

    fs.stat(path, callback)fs.statSync(path)

    参数

  • path:目标文件或目录路径
  • callback:回调函数,接收统计信息对象和错误信息
  • statSync:同步查询文件或目录详细信息的方法
  • 属性

    • isFile():是否为文件
    • 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. 如何移除文件夹?

    FS 模块提供了两种移除文件夹的方法:rmdir() 和 rmdirSync()。

    语法

    fs.rmdir(path, callback)fs.rmdirSync(path)

    参数

  • path:要删除的文件夹路径
  • callback:回调函数,接收错误信息
  • rmdirSync:同步移除文件夹的方法
  • 示例

    const fs = require('fs');fs.rmdir('./output', function (err) {    console.log(err || '成功');});fs.rmdirSync('./output');

    11. 如何监视文件变化?

    FS 模块提供了文件变化监视的方法:watchFile()、unwatchFile() 和 watch()。

    方法说明

    • watchFile():监听文件变化,触发回调函数
    • unwatchFile():停止监视特定文件或所有文件的变化
    • watch():更高效的文件或目录变化监视方法,支持递归子目录

    语法

    fs.watchFile(filename, options, callback)fs.unwatchFile(filename, callback)fs.watch(filename, options, callback)

    参数

    • filename:要监视的文件或目录路径
    • options:配置选项(如 persistent 和 interval)
    • callback:回调函数,接收事件类型和文件名
    • eventType:事件类型(rename 或 change)

    示例

    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(); // 停止监视});

    12. 如何创建可读流和可写流?

    FS 模块提供了创建流的方法:createReadStream() 和 createWriteStream()。

    语法

    fs.createReadStream(path, options)fs.createWriteStream(path, options)

    示例

    const fs = require('fs');fs.createReadStream('text.txt');fs.createWriteStream('text.txt');

    通过以上方法,您可以轻松地进行文件操作,满足各种开发需求。

    转载地址:http://ybvoz.baihongyu.com/

    你可能感兴趣的文章
    Python和RF编写web自动化
    查看>>
    python和js哪个难_【Python】记一次学习,Python 与 js 在实现闭包时的差异
    查看>>
    python和java哪个更值得学——来自知乎高赞回答
    查看>>
    python和c混合编程 github_在pycharm中使用git版本管理以及同步github的方法
    查看>>
    python命名空间更改_Python模块xml.etree.ElementTree自动修改xml命名空间键
    查看>>
    Python命名中尾随下划线有什么好处?
    查看>>
    Python启动脚本
    查看>>
    Python听写汇总结果
    查看>>
    python吊打Excel?屁!那是你不会用!
    查看>>
    Python合并两张图片 | 先叠透明度再合并 (附Demo)
    查看>>
    python各进制的表述与转换
    查看>>
    python各种库安装
    查看>>
    python可视化matplotlib_如何使用Python中最强大的可视化工具Matplotlib?
    查看>>
    python可维护性_使用这7大神器,让你的Python 代码更容易于维护
    查看>>
    Python只运行一次while循环
    查看>>
    python变量的详细教程_Python零基础入门教程之语法入门[变量](第二期)
    查看>>
    Python变量命名方法-ChatGPT4o作答
    查看>>
    Python变量与运算符
    查看>>
    Python变量/运算符/函数/模块/string
    查看>>
    python发送邮件的时候出现 error (535, b‘5.7.3 Authentication unsuccessful‘) 解决方法
    查看>>