首页 > 编程语言 >Node.js 读取文件技巧与案例分享

Node.js 读取文件技巧与案例分享

时间:2024-01-05 17:35:14浏览次数:46  
标签:Node 文件 fs 读取 js txt

在面向服务器端 JavaScript 环境 Node.js 的开发中,处理文件读取至关重要,它是实现文件内容访问、分析和操作的关键步骤。这一功能对开发网络服务、日志审查系统、数据加工程序等多种软件非常有用。有了 Node.js 强大的文件处理能力,您可以毫不费力地读入文本、JSON、XML 等文件类型,以适合您的特定需求。

Node.js 读取文件技巧与案例分享_程序员

应用实例

文件读取在众多情景下发挥着不可或缺的作用,下面举几个例子:

  1. 载入配置: 读入程序的设置,例如数据库的接入信息,或是 API 的密钥。
  2. 分析日志: 查阅并研究软件产生的日志,以获取性能指标和定位问题。
  3. 处理上传: 在网络应用中处理用户上送的文件。
  4. 数据导入: 读入来自外部数据库的数据,进行后续加工或分析。
  5. 提供静态资源: 网络服务器需要读入并响应 HTML、CSS、JavaScript 等静态资源的请求。
  6. 格式转换: 把数据从一种格式(比如 CSV、XML)转换为另一种,以满足程序需要。现在让我们更详细地探讨在 Node.js 中如何执行文件读取。

概念与模块解説

在 Node.js 中读取文件,一般会涉及几个关键的模块:

  • fs 模块:这个 Node.js 标准的文件系统模块,负责所有文件操作。我们主要通过它提供的API来实现文件的读取。

文件读取的几种方法

1. 同步读取

同步读取会在文件全部读入前暂停程序的运行。以下是一个典型例子:

const fs = require('fs');

try {
  const content = fs.readFileSync('example.txt', 'utf8');
  console.log(content);
} catch (err) {
  console.error(err);
}

2. 异步读取

异步操作允许程序继续执行,文件读取结束时通过回调函数进行处理:

const fs = require('fs');

fs.readFile('example.txt', 'utf8', (error, content) => {
  if (error) {
    console.error(error);
    return;
  }
  console.log(content);
});

3. 利用 Promises 进行读取

从 Node.js v12 开始,fs.promises API 加入,提供了基于 Promise 的读取方法:

const fsp = require('fs').promises;

fsp.readFile('example.txt', 'utf8')
  .then(content => {
    console.log(content);
  })
  .catch(err => {
    console.error(err);
  });

实操示例

我们使用一个具体的例子,演示在 Node.js 如何读取并处理文件。假定我们有一个名叫 data.txt 的文件,里面存有些许数据,我们想通过 Node.js 来读取它。

步骤 1: 准备文件

开始前,我们创建一个 data.txt 文件,内容如下:

Hello, Node.js!
Here is some example text.
We will read this file with Node.js.

步骤 2: 编写 Node.js 脚本

接下来,撰写一个简单的 Node.js 脚本文件来处理 data.txt

const fsp = require('fs').promises;

async function processFile() {
  try {
    const content = await fsp.readFile('data.txt', 'utf8');
    console.log('Read file successfully:\n', content);
  } catch (err) {
    console.error('An error occurred:', err);
  }
}

processFile();

这个脚本利用 fs.promises.readFile 异步读取文件,并通过 await 等待操作的完成。读取成功便输出文件内容,失败则打印错误信息。

步骤 3: 执行脚本

在终端中切回含有 Node.js 脚本与 data.txt 的目录,执行脚本:

node your-script.js

脚本将输出 data.txt 的内容到控制台上。

一些额外建议

  • 面对大型文件时,应优先考虑异步方法以避免执行阻塞。
  • 总是对可能遇到的异常情况做出处理,如文件缺失或无权访问。
  • 当处理非文本文件(比如图片或二进制文件)时,可跳过字符编码的设置以返回二进制数据。
  • 在处理大文件时,可考虑流式读取来降低内存占用。

用 Apifox 来管理后端接口

如果你是一名 Node.js 开发者,经常需要与后端 API 相互作用,确认应用的正确性。这时,一个有效的接口管理工具是必不可少的。

Apifox 提供了一套接口管理解决方案,它结合了 Postman 的调试功能以及 Swagger 的接口文档管理,附加 Mock 数据与 JMeter 性能测试,支持多种协议,如 HTTP(S)、WebSocket、Socket、gRPC、Dubbo 等,是为 API 开发着手设计的。此外,Apifox 还提供了 IDEA 插件,增强与 IDE 的协作效率。Apifox 的直观界面和全面功能,极大提高了项目开发的流程效率,可以让开发者更加方便地管理和测试接口。值得一试。

Node.js 读取文件技巧与案例分享_文件读取_02

结语

在 Node.js 中,文件读取是一个基础且核心的操作,它使我们能够读入、分析和操作各种文件。本文介绍了几种常用的文件读取方式,并以实际实例指导了如何读取文本文件。希望以上内容能助您在 Node.js 项目中更高效地运用文件读取功能。

知识扩展:

参考链接:

标签:Node,文件,fs,读取,js,txt
From: https://blog.51cto.com/u_15964533/9116036

相关文章

  • Python爬虫JS解密-baidu翻译
    请求分析参数构造流程这种提交数据得到响应的的请求,往往参数比较麻烦,所以参数的构造是得到完整请求的关键.首先我们要明确目标,爬取这个网站的目的是什么,那我们的目的就是模拟浏览器发送请求,完成翻译的功能,明确了目标之后我们再定位到相关的URL就比较容易了。现在先打开chrome的调......
  • MySQL 8.0的SQL查询JSON返回的数据类型为字符串而非数组
    在MySQL8.0中,SQL查询JSON返回的数据类型确实是字符串,而不是数组。这是因为MySQL将JSON数据存储为字符串,并提供了一些函数和操作符来处理JSON数据。但是,你可以使用内置的JSON函数来处理返回的JSON字符串。例如,你可以使用JSON_EXTRACT函数来提取JSON字符串......
  • 如何追踪discord.js中删除消息的用户?
    要追踪Discord.js中删除消息的用户,您可以使用messageDelete事件和messageDeleteBulk事件。这两个事件都会在消息或多个消息被删除时触发。在messageDelete事件的回调函数中,您可以通过message对象的author属性获取删除消息的用户。以下是一个示例代码,展示如何使用messageDelete事件......
  • 贪吃蛇game.js代码
    // pages/game/game.jsvar positions;const stdWid = 20;var direction = -1;//2上1左 -2下-1右var headNode;var cvs;var headImg;var food1,food2;var interval;var speed;Page({  /**   * 页面的初始数据   */  data: {    score:0,  },  /*......
  • 【前端】安装指定版本的nodejs
    先安装curlsudoaptinstallcurl以下是Nodejs18.x的安装,一行代码搞定&&\的意思是前面的命令执行无误后,再执行后面代码curl-fsSLhttps://deb.nodesource.com/setup_18.x|sudo-Ebash-&&\sudoapt-getinstall-ynodejs......
  • Ubuntu卸载node npm
    (1)先卸载npm:sudonpmuninstallnpm-g(2)然后卸载Node.js.如果是Ubuntu系统并使用apt-get安装的,可以使用命令:sudoapt-getremovenodejs......
  • 前端歌谣-第四拾九课-node之http模块之fs模块
    前言我是歌谣微信公众号关注前端小歌谣一起学习前端知识今天继续给大家讲解node中fs模块的讲解创建文件constfs=require("fs")fs.mkdir("./geyao",(err)=>{console.log(err)if(err&&err.code==="EEXIST"){console.log("目录已经存在")}})运行结果重命......
  • 前端歌谣-第五十课-node之http模块之fs模块(续)
    前言我是歌谣微信公众号关注前端小歌谣一起学习前端知识今天继续给大家讲解node中fs模块的讲解同步创建constfs=require("fs")fs.mkdirSync("./geyao1",(err)=>{console.log(err)if(err&&err.code==="EEXIST"){console.log("目录已经存在")}})运行......
  • SpringBoot+modbus4j实现ModebusTCP通讯读取数据
    场景Windows上ModbusTCP模拟Master与Slave工具的使用:Windows上ModbusTCP模拟Master与Slave工具的使用ModebusTCPModbus由MODICON公司于1979年开发,是一种工业现场总线协议标准。1996年施耐德公司推出基于以太网TCP/IP的Modbus协议:ModbusTCP。Modbus协议是一项应用层报文传输协议,包......
  • SpringBoot中读取yml中配置的list对象的配置项
    场景SpringBoot中通过ConfigurationProperties注解的方式读取application.yml中配置的属性值:SpringBoot中通过ConfigurationProperties注解的方式读取application.yml中配置的属性值_demoenabled:true参考上面获取yml配置文件中简单的配置项的方式。如果需要获取application.yml中......