博客
关于我
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/

    你可能感兴趣的文章
    Netty工作笔记0077---handler链调用机制实例4
    查看>>
    Netty工作笔记0084---通过自定义协议解决粘包拆包问题2
    查看>>
    Netty工作笔记0085---TCP粘包拆包内容梳理
    查看>>
    Netty常用组件一
    查看>>
    Netty常见组件二
    查看>>
    netty底层源码探究:启动流程;EventLoop中的selector、线程、任务队列;监听处理accept、read事件流程;
    查看>>
    Netty心跳检测机制
    查看>>
    Netty核心模块组件
    查看>>
    Netty框架内的宝藏:ByteBuf
    查看>>
    Netty框架的服务端开发中创建EventLoopGroup对象时线程数量源码解析
    查看>>
    Netty源码—2.Reactor线程模型一
    查看>>
    Netty源码—3.Reactor线程模型三
    查看>>
    Netty源码—4.客户端接入流程一
    查看>>
    Netty源码—4.客户端接入流程二
    查看>>
    Netty源码—5.Pipeline和Handler一
    查看>>
    Netty源码—5.Pipeline和Handler二
    查看>>
    Netty源码—6.ByteBuf原理一
    查看>>
    Netty源码—6.ByteBuf原理二
    查看>>
    Netty源码—7.ByteBuf原理三
    查看>>
    Netty源码—7.ByteBuf原理四
    查看>>