博客
关于我
node中fs模块之文件操作
阅读量:792 次
发布时间:2023-02-16

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

关于Node.js文件操作的实用指南

在Node.js开发过程中,文件操作是日常工作中的常见需求。以下是一些实用的文件操作方法和技巧,帮助你高效完成文件管理任务。

  • 异步读取文件

    如果你需要处理文件读取任务,可以使用fs.readFile方法。它允许你以异步方式读取文件内容。示例代码如下:

    var fs = require('fs');  fs.readFile('input.txt', function(err, data) {      if (err) {          console.log('读取文件失败:', err);      } else {          console.log('异步读取文件内容:', data.toString());      }  });
  • 同步读取文件

    如果你需要立即获取文件内容,可以使用fs.readFileSync方法。它返回一个Promise,或者直接返回读取结果。示例代码如下:

    var fs = require('fs');  var data = fs.readFileSync('input.txt');  console.log('同步读取文件内容:', data.toString());
  • 重命名文件

    如果需要修改文件名,可以使用fs.rename方法。它支持异步操作,可以通过回调函数处理异常。示例代码如下:

    var fs = require('fs');  fs.rename('hello.txt', 'index.txt', function(err) {      if (err) {          console.log('重命名失败:', err);      } else {          console.log('文件已重命名成功');      }  });
  • 同步重命名文件

    如果你不需要处理异常,可以使用fs.renameSync方法。它直接返回结果。示例代码如下:

    var fs = require('fs');  fs.renameSync('hello.txt', 'index.txt');
  • 获取文件信息

    如果需要获取文件的详细信息(如文件大小、权限等),可以使用fs.stat方法。它接受文件路径和回调函数。示例代码如下:

    var fs = require('fs');  fs.stat('index.txt', function(err, stats) {      if (err) {          console.log('获取文件信息失败:', err);      } else {          console.log('文件信息:');          console.log('文件大小:', stats.size);          console.log('文件是否为文件:', stats.isFile());          console.log('文件是否为目录:', stats.isDirectory());      }  });
  • 打开文件

    如果需要打开文件进行读写操作,可以使用fs.open方法。它支持不同的文件打开模式,如读取、写入或追加。示例代码如下:

    var fs = require('fs');  fs.open('index.txt', 'r+', function(err, fd) {      if (err) {          console.log('打开文件失败:', err);      } else {          console.log('文件已打开成功');      }  });
  • 写入文件

    如果需要向文件中写入内容,可以使用fs.writeFile方法。它支持字符串、Buffer等类型的数据写入。示例代码如下:

    var fs = require('fs');  fs.writeFile('input.txt', '这是新写入的内容', 'utf8', function(err) {      if (err) {          console.log('写入文件失败:', err);      } else {          console.log('文件已成功写入新内容');      }  });
  • 追加写入文件

    如果需要在文件末尾追加内容,可以使用fs.appendFile方法。示例代码如下:

    var fs = require('fs');  fs.appendFile('index.txt', '窗前明月光,疑是地上霜', 'utf8', function(err) {      if (err) {          console.log('追加写入失败:', err);      } else {          console.log('追加写入成功');      }  });
  • 关闭文件

    在读取或写入文件后,记得关闭文件以释放资源。使用fs.close方法即可。示例代码如下:

    var fs = require('fs');  fs.open('input.txt', 'r+', function(err, fd) {      if (err) {          console.log('打开文件失败:', err);      } else {          console.log('文件已打开成功');          fs.close(fd, function(err) {              if (err) {                  console.log('关闭文件失败:', err);              } else {                  console.log('文件已成功关闭');              }          });      }  });
  • 截取文件内容

    如果需要截取文件的部分内容,可以使用fs.ftruncate方法。它接受文件描述符和截取的长度。示例代码如下:

    var fs = require('fs');  fs.open('input.txt', 'r+', function(err, fd) {      if (err) {          console.log('打开文件失败:', err);      } else {          console.log('文件已打开成功');          fs.ftruncate(fd, 10, function(err) {              if (err) {                  console.log('截取文件失败:', err);              } else {                  console.log('文件已截取到10字节');                  fs.read(fd, new Buffer(1024), 0, 1024, 0, function(err, bytes) {                      if (err) {                          console.log('读取文件失败:', err);                      } else {                          console.log('已读取到:', bytes);                          if (bytes > 0) {                              console.log(buf.slice(0, bytes).toString());                          }                      }                  });              }          });      }  });
  • 删除文件

    如果需要删除文件,可以使用fs.unlink方法。它接受文件路径和回调函数。示例代码如下:

    var fs = require('fs');  fs.unlink('input.txt', function(err) {      if (err) {          console.log('删除文件失败:', err);      } else {          console.log('文件删除成功');      }  });
  • 创建目录

    如果需要创建目录,可以使用fs.mkdir方法。它接受目录路径和回调函数。示例代码如下:

    var fs = require('fs');  fs.mkdir('test', function(err) {      if (err) {          console.log('创建目录失败:', err);      } else {          console.log('目录已成功创建');      }  });
  • 查看目录内容

    如果需要查看目录中的文件,可以使用fs.readdir方法。它接受目录路径和回调函数。示例代码如下:

    var fs = require('fs');  fs.readdir('../file/', function(err, files) {      if (err) {          console.log('读取目录失败:', err);      } else {          files.forEach(function(file) {              console.log('目录中的文件:', file);          });      }  });
  • 删除目录

    如果需要删除目录,可以使用fs.rmdir方法。它接受目录路径和回调函数。示例代码如下:

    var fs = require('fs');  fs.rmdir('test', function(err) {      if (err) {          console.log('删除目录失败:', err);      } else {          console.log('目录已成功删除');      }  });
  • 检查文件路径是否存在

    如果需要检查文件或目录是否存在,可以使用fs.exists方法。它接受路径和回调函数。示例代码如下:

    var fs = require('fs');  fs.exists('/chengyi', function(exists) {      if (exists) {          console.log('路径存在');      } else {          console.log('路径不存在');      }  });
  • 其他文件操作

    除了上述方法,你还可以使用fs.createWriteStream来高效地进行文件写入操作,适用于大文件或持续写入场景。例如:

    var fs = require('fs');  var writeStream = fs.createWriteStream('output.txt');  writeStream.write('这是写入的内容\n', 'utf8');  writeStream.end(function(err) {      if (err) {          console.log('写入失败:', err);      } else {          console.log('写入成功');      }  });
  • 这些方法为你提供了在Node.js中处理文件操作的多种选择,根据具体需求选择合适的方法可以提高你的开发效率。

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

    你可能感兴趣的文章
    Nginx配置——不记录指定文件类型日志
    查看>>
    nginx配置一、二级域名、多域名对应(api接口、前端网站、后台管理网站)
    查看>>
    Nginx配置代理解决本地html进行ajax请求接口跨域问题
    查看>>
    nginx配置全解
    查看>>
    Nginx配置参数中文说明
    查看>>
    nginx配置域名和ip同时访问、开放多端口
    查看>>
    Nginx配置好ssl,但$_SERVER[‘HTTPS‘]取不到值
    查看>>
    Nginx配置如何一键生成
    查看>>
    Nginx配置实例-负载均衡实例:平均访问多台服务器
    查看>>
    Nginx配置文件nginx.conf中文详解(总结)
    查看>>
    Nginx配置负载均衡到后台网关集群
    查看>>
    ngrok | 内网穿透,支持 HTTPS、国内访问、静态域名
    查看>>
    NHibernate学习[1]
    查看>>
    NHibernate异常:No persister for的解决办法
    查看>>
    NIFI1.21.0_Mysql到Mysql增量CDC同步中_日期类型_以及null数据同步处理补充---大数据之Nifi工作笔记0057
    查看>>
    NIFI1.21.0_NIFI和hadoop蹦了_200G集群磁盘又满了_Jps看不到进程了_Unable to write in /tmp. Aborting----大数据之Nifi工作笔记0052
    查看>>
    NIFI1.21.0通过Postgresql11的CDC逻辑复制槽实现_指定表多表增量同步_增删改数据分发及删除数据实时同步_通过分页解决变更记录过大问题_02----大数据之Nifi工作笔记0054
    查看>>
    NIFI1.23.2_最新版_性能优化通用_技巧积累_使用NIFI表达式过滤表_随时更新---大数据之Nifi工作笔记0063
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_根据binlog实现数据实时delete同步_实际操作04---大数据之Nifi工作笔记0043
    查看>>
    NIFI从MySql中增量同步数据_通过Mysql的binlog功能_实时同步mysql数据_配置binlog_使用处理器抓取binlog数据_实际操作01---大数据之Nifi工作笔记0040
    查看>>