博客
关于我
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 安装opencv及问题解决
    查看>>
    Python 安装程序:“写入文件 C:\Python27\pythonw.exe 时出错“
    查看>>
    Python 安装避坑指南:从入门到进阶
    查看>>
    Python 安装配置详解
    查看>>
    python 实现儿童算术游戏
    查看>>
    python 实现字符串转整型
    查看>>
    Python 实现定时任务的八种方案!
    查看>>
    Python 实现自动化测试 dubbo 协议接口
    查看>>
    python 对json数据读取及保存与读取,对dump,dumps,load,loads的理解
    查看>>
    Python 对mysql数据库的操作
    查看>>
    Python 对象数据库列表
    查看>>
    Python 导入requests报错No module named requests
    查看>>
    python 将函数加到列表中进行调用
    查看>>
    python 将图片与字符串相互转换
    查看>>
    Python 嵌套字典全面指南
    查看>>
    Python 工具v简介
    查看>>
    python 常见内置函数setattr、getattr、delattr、setitem、getitem、delitem
    查看>>
    Python 常见的错误类型和继承关系
    查看>>
    python 常量_零基础学Python系列之一:Python的变量与常量
    查看>>
    Python 并发编程
    查看>>