node.js内置模块之---fs 模块

fs模块的作用

Node.js 中,fs(文件系统)模块提供了与文件系统交互的功能,允许你读取、写入、更新和删除文件,以及操作文件和目录。这个模块是 Node.js 的核心模块之一,主要用于服务器端处理文件系统相关的操作。

fs模块api

1、读取文件

  • fs.readFile(path, options, callback):异步读取文件内容。
  • fs.readFileSync(path, options):同步读取文件内容。
const fs = require('fs');

// 异步读取文件
fs.readFile('example.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// 同步读取文件
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);

2、写入文件

  • fs.writeFile(path, data, options, callback):异步写入文件。如果文件不存在则创建文件,文件存在则覆盖。
  • fs.writeFileSync(path, data, options):同步写入文件。
// 异步写入文件
fs.writeFile('output.txt', 'Hello, Node.js!', (err) => {
  if (err) throw err;
  console.log('File has been written!');
});

// 同步写入文件
fs.writeFileSync('output.txt', 'Hello, Node.js!');
console.log('File has been written!');

3、追加文件内容

  • fs.appendFile(path, data, callback):异步追加内容到文件末尾。
  • fs.appendFileSync(path, data):同步追加内容到文件末尾。
// 异步追加文件内容
fs.appendFile('output.txt', '\nThis is an appended text.', (err) => {
  if (err) throw err;
  console.log('Content appended!');
});

// 同步追加文件内容
fs.appendFileSync('output.txt', '\nThis is an appended text.');
console.log('Content appended!');

4、删除文件

  • fs.unlink(path, callback):异步删除文件。
  • fs.unlinkSync(path):同步删除文件。
// 异步删除文件
fs.unlink('output.txt', (err) => {
  if (err) throw err;
  console.log('File deleted!');
});

// 同步删除文件
fs.unlinkSync('output.txt');
console.log('File deleted!');

5、创建目录

  • fs.mkdir(path, options, callback):异步创建目录。
  • fs.mkdirSync(path, options):同步创建目录。
// 异步创建目录
fs.mkdir('newDir', { recursive: true }, (err) => {
  if (err) throw err;
  console.log('Directory created!');
});

// 同步创建目录
fs.mkdirSync('newDir', { recursive: true });
console.log('Directory created!');

6、删除目录

  • fs.rmdir(path, callback):异步删除空目录。
  • fs.rmdirSync(path):同步删除空目录。
// 异步删除目录
fs.rmdir('newDir', (err) => {
  if (err) throw err;
  console.log('Directory removed!');
});

// 同步删除目录
fs.rmdirSync('newDir');
console.log('Directory removed!');

7、检查文件或目录是否存在

  • fs.existsSync(path):同步检查文件或目录是否存在。
  • fs.exists(path, callback):异步检查文件或目录是否存在(已废弃,建议使用 fs.access)。
// 同步检查文件是否存在
if (fs.existsSync('example.txt')) {
  console.log('File exists!');
}

// 异步检查文件是否存在
fs.access('example.txt', fs.constants.F_OK, (err) => {
  if (err) {
    console.log('File does not exist');
  } else {
    console.log('File exists');
  }
});

8、获取文件信息

  • fs.stat(path, callback):异步获取文件或目录的信息。
  • fs.statSync(path):同步获取文件或目录的信息。
// 异步获取文件信息
fs.stat('example.txt', (err, stats) => {
  if (err) throw err;
  console.log(stats);
});

// 同步获取文件信息
const stats = fs.statSync('example.txt');
console.log(stats);

9、文件目录读取

  • fs.readdir(path, callback):异步读取目录内容。
  • fs.readdirSync(path):同步读取目录内容。
// 异步读取目录内容
fs.readdir('./', (err, files) => {
  if (err) throw err;
  console.log(files);
});

// 同步读取目录内容
const files = fs.readdirSync('./');
console.log(files);

主要方法总结:

  • 异步方法(带回调函数)用于非阻塞 I/O 操作,适合大多数场景。
  • 同步方法(不带回调函数)会阻塞程序执行,通常用于脚本或小型程序中。

注意事项:

  • 使用 异步方法 可以提高应用的性能,尤其是在处理大量文件或进行文件 I/O 时。
  • 对于 同步方法,如果程序中的某个文件操作很慢,它会阻塞整个事件循环,可能导致性能问题。

应用场景:

  • 读取配置文件、日志文件。
  • 存储用户上传的文件。
  • 管理文件系统中的数据(如备份、删除、更新文件等)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949117.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于单片机中药存放环境监测系统的实现

基于单片机中药存放环境监测系统的实现 项目开发背景 随着现代中药的广泛应用,中药材的存储环境对其质量有着至关重要的影响。温湿度、烟雾、火灾等环境因素,若不加以控制,将会导致中药材失效或变质。因此,设计一个基于单片机的…

「Java 数据结构全面解读」:从基础到进阶的实战指南

「Java 数据结构全面解读」:从基础到进阶的实战指南 数据结构是程序设计中的核心部分,用于组织和管理数据。Java 提供了丰富的集合框架和工具类,涵盖了常见的数据结构如数组、链表、栈、队列和树等。本文将系统性地介绍这些数据结构的概念、…

webserver的http实现

1、用了状态机,为什么要用状态机? 在逻辑处理模块中,响应的http请求采用主从状态机完成, 传统的控制流程都是按照顺序执行的,状态机能够处理任意顺序的事件,并能提供有意义的响应--即使这些事件发生的顺序和…

Uniapp Android 本地离线打包(详细流程)

一、简介 App 离线 SDK 暂时不支持 Kotlin,未来不清楚。 uniapp 提供了 云打包 与 本地打包 两种方案,云打包 需要排队且还有次数限制,本地打包 则就没有这些限制,而且会 本地打包 对开发 原生插件 有很大的帮助。 细节&#x…

记录一次电脑被入侵用来挖矿的过程(Trojan、Miner、Hack、turminoob)

文章目录 0、总结1、背景2、端倪3、有个微软的系统更新,就想着更新看看(能否冲掉问题)4、更新没成功,自动重启电脑5、风险文件(好家伙命名还挺规范,一看名字就知道出问题了)6、开机有一些注册表…

使用大语言模型的生物嵌入,后续应该会有很多类似文章出来!

生信碱移 语言模型嵌入 小编先前分享了使用ChatGPT基因嵌入做平替的顶刊文章GenePT,只需要在原本的领域工作上插入这类的GPT嵌入,就能够实现降维打击。 ▲ 对于GenePT或者嵌入感兴趣的铁子,可以点击查看上面这篇推文。 今天冲浪的时候又看…

如何在没有 iCloud 的情况下将联系人从 iPhone 传输到 iPhone

概括 近期iOS 13.5的更新以及苹果公司发布的iPhone SE在众多iOS用户中引起了不小的轰动。此外,不少变化,如暴露通知 API、Face ID 增强功能以​​及其他在 COVID-19 期间与公共卫生相关的新功能,吸引了 iPhone 用户尝试新 iPhone 并更新到最…

GitLab集成Runner详细版--及注意事项汇总【最佳实践】

一、背景 看到网上很多用户提出的runner问题其实实际都不是问题,不过是因为对runner的一些细节不清楚导致了误解。本文不系统性的介绍GitLab-Runner,因为这类文章写得好的特别多,本文只汇总一些常几的问题/注意事项。旨在让新手少弯路。 二、…

【从零开始入门unity游戏开发之——C#篇40】C#特性(Attributes)和自定义特性

文章目录 前言一、特性(Attributes)基本概念二、自定义特性1、自定义特性代码示例:2、应用自定义特性:3、解释3.1 **AttributeUsage 特性**3.2 特性的命名3.3 **构造函数**:3.4 **属性**: 4、使用反射获取特…

k8s基础(2)—Kubernetes-Namespace

一、Namespace概述 名字空间 在 Kubernetes 中,名字空间(Namespace) 提供一种机制,将同一集群中的资源划分为相互隔离的组。 同一名字空间内的资源名称要唯一,但跨名字空间时没有这个要求。 名字空间作用域仅针对带有…

iOS 逆向学习 - iOS Security Features:硬件与软件多重防护体系

iOS 逆向学习 - iOS Security Features:硬件与软件多重防护体系 iOS 安全特性全面解析:构筑多层次防御体系一、iOS 的硬件安全特性1. Secure Enclave(安全隔区)2. Hardware Root of Trust(硬件信任根)3. De…

计算机网络——数据链路层-流量控制和可靠传输

一、流量控制 流量控制是指由接收方及时控制发送方发送数据的速率,使接收方来得及接受。 • 停止等待流量控制 • 滑动窗口流量控制 1、停止—等待流量控制 停止-等待流量控制的基本原理是发送方每发出一帧后,就要等待接收方的应答信号&#xff…

Zookeeper是如何保证事务的顺序一致性的?

大家好,我是锋哥。今天分享关于【Zookeeper是如何保证事务的顺序一致性的?】面试题。希望对大家有帮助; Zookeeper是如何保证事务的顺序一致性的? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 Zookeeper 通过多个机制来保证事务的顺序一…

实际开发中,常见pdf|word|excel等文件的预览和下载

实际开发中,常见pdf|word|excel等文件的预览和下载 背景相关类型数据之间的转换1、File转Blob2、File转ArrayBuffer3、Blob转ArrayBuffer4、Blob转File5、ArrayBuffer转Blob6、ArrayBuffer转File 根据Blob/File类型生成可预览的Base64地址基于Blob类型的各种文件的下载各种类型…

Qt使用CMake编译项目时报错:#undefined reference to `vtable for MainView‘

博主将.h文件和.cpp文件放到了不同的文件目录下面,如下图所示: 于是构建项目的时候就报错了#undefined reference to vtable for MainView,这个是由于src/view目录下的CMake无法自动moc头文件导致的,需要手动moc include/view目录…

会员制电商创新:开源 AI 智能名片与 2+1 链动模式的协同赋能

摘要:本文聚焦于电商领域会员制的关键作用,深入探讨在传统交易模式向数字化转型过程中,如何借助开源 AI 智能名片以及 21 链动模式商城小程序,实现对会员数据的精准挖掘与高效利用,进而提升企业的营销效能与客户洞察能…

第27周:文献阅读及机器学习

目录 摘要 Abstract 一、文献阅读 发现问题 研究方法 CNN-LSTM DT SVR 创新点 案例分析 数据准备 模型性能 预测模型的实现 仿真实验及分析 二、LSTM 1、基本结构 2、具体步骤 3、举例说明 4、原理理解 总结 摘要 本周阅读文献《Short-term water qua…

【机器遗忘之UNSIR算法】2023年IEEE Trans期刊论文:Fast yet effective machine unlearning

1 介绍 年份:2023 期刊:IEEE Transactions on Neural Networks and Learning Systems 引用量:170 Tarun A K, Chundawat V S, Mandal M, et al. Fast yet effective machine unlearning[J]. IEEE Transactions on Neural Networks and Le…

Linux-----进程处理(waitpid,进程树,孤儿进程)

目录 waitpid等待 进程树 孤儿进程 waitpid等待 Linux中父进程除了可以启动子进程,还要负责回收子进程的状态。如果子进程结束后父进程没有正常回收,那么子进程就会变成一个僵尸进程——即程序执行完成,但是进程没有完全结束,其…