当前位置: 首页 > news >正文

NodeJs-fs模块

fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块, fs模块可以实现与硬盘的交互,例如文件的创建、删除、重命名、移动,内容的写入读取等以及文件夹相关操作

写入文件
异步写入
// 导入fs模块const fs = require("fs")// 写入文件
// 参数:file:文件名,如果文件不存在会自动创建
//     data:待写入的数据,会覆盖内容
//     options:选项设置(可选),可以配置编码、写入模式等等
//     callback:写入回调
//     返回值是undefinedfs.writeFile("./test.txt","helloword",err => {// 写入完成之后会自动调用回调函数,如果写入失败,err是一个错误对象console.log(err)
})
同步写入
// 写入文件
// 参数:file:文件名,如果文件不存在会自动创建
//     data:待写入的数据,会覆盖内容
//     options:选项设置(可选)fs.writeFileSync("./test1.txt","helloword")
追加写入
  1. 异步写入

    // 以追加的形式写入
    fs.appendFile("./test.txt", "helloword", err => {console.log(err)
    })
  2. 同步写入

    fs.appendFileSync("./test.txt", "helloword", err => {console.log(err)
    })
流式写入

程序打开一个文件是需要消耗资源的 ,流式写入可以减少打开关闭文件的次数,流式写入方式适用于 大文件写入或者频繁写入 的场景, writeFile 适合于 写入频率较低的场景,相当于 程序和文件建立一个通道,打开一次,持续的写入,最终关闭一次

// 导入fs模块const fs = require("fs")// 创建写入流对象
// 参数:文件路径、options选项,返回值是一个对象
let ws = fs.createWriteStream("./text.txt")// 写入的内容
ws.write("aaaa")
ws.write("bbbb")
ws.write("cccc")// 关闭写入流,可选显示调用
ws.end()
文件读取
异步读取
// 导入fs模块const fs = require("fs")// 异步读取
// 参数:文件路径、options选项配置、回调函数
fs.readFile("./text.txt",(err,data)=>{// 读取到文件之后,回调函数会被调用if (err){console.log("读取失败")}else {// 读取到的内容是一个buffer,可以使用toString转换console.log(data.toString())}})
同步读取
let data = fs.readFileSync("./text.txt")console.log(data.toString())
流式读取
// 导入fs模块const fs = require("fs")// 创建读取流对象
let rs = fs.createReadStream("./text.tx")// 给rs绑定data事件,每次读取64k的数据,每次读取一次后触发一次chunk回调
rs.on("data", chunk => {console.log(chunk)
})// 绑定end事件(可选)
// 全部读取完成后,触发end回调
rs.on("end", ()=>{console.log("关闭")
})
文件移动&重命名

使用 rename 或 renameSync 来移动或重命名 文件或文件夹

  1. 异步操作

    // 参数:oldPath 文件当前的路径 、newPath 文件新的路径 、callback 操作后的回调// 重命名
    fs.rename("./text.txt","./run.txt", err => {if (err){console.log(err)}else {console.log("成功")}})// 文件移动
    fs.rename("./run.txt","../data/run.txt",err =>{console.log(err)
    })
  2. 同步操作

    // 参数:oldPath 文件当前的路径 、newPath 文件新的路径
    fs.renameSync("./run.txt","./text.txt")
文件删除
  1. 异步删除

    fs.unlink("./text.txt",err => {console.log(err)
    })
  2. 同步删除

    fs.unlinkSync("./text.txt",err => {console.log(err)
    })
  3. rm方法删除,node14.4版本引入的新方法

    // 异步
    fs.rm("./text.txt",err => {console.log(err)
    })// 同步
    fs.rmSync("./text.txt")
文件夹操作
创建文件夹
  1. 异步创建

    // 只能创建一层目录
    // 参数:文件路径、选项配置、回调函数
    fs.mkdir("./data", err => {if (err){console.log("失败")}else {console.log("成功")}
    })
  2. 递归异步创建

    // 递归创建-可以创建多层目录,创建src文件夹在src下创建uti文件夹l在util下创建main文件夹
    fs.mkdir("./src/util/main",{recursive:true},err => {console.log(err)
    })
  3. 同步创建

    fs.mkdirSync("./dat1a")
  4. 递归同步创建

    // 递归创建-可以创建多层目录,创建src文件夹在src下创建uti文件夹l在util下创建main文件夹
    fs.mkdirSync("./src/util/main",{recursive:true})
读取文件夹
  1. 异步读取

    fs.readdir("./",(err,data) =>{console.log(err)console.log(data) // 是一个数组,是文件夹下路径下的资源
    })
  2. 同步读取

    let data = fs.readdirSync("./")
    console.log(data)
删除文件夹
  1. 异步删除

    // 只能删除一层目录
    fs.rmdir("./data",err =>{console.log(err)
    })// 递归删除
    fs.rmdir("./data/main",{recursive:true},err =>{console.log(err)
    })
  2. 同步删除

    fs.rmdirSync("./data")// 递归同步删除
    fs.rmdirSync("./data",{recursive:true})
资源状态
// 异步
fs.stat("./data",(err,data)=>{console.log(err)console.log(data) // 是一个对象,包含文件创建时间、体积、类型等等各种信息})// 同步
fs.statSync("./data")
__dirname

__dirname 与 require 类似,都是 Node.js 环境中的'全局'变量

__dirname 保存着 当前文件所在目录的绝对路径 ,可以使用__dirname 与文件名拼接成绝对路径

let data = fs.readFileSync(__dirname + '/data.txt');

相关文章:

NodeJs-fs模块

fs 全称为 file system ,称之为 文件系统 ,是 Node.js 中的 内置模块, fs模块可以实现与硬盘的交互,例如文件的创建、删除、重命名、移动,内容的写入读取等以及文件夹相关操作 写入文件 异步写入 // 导入fs模块const f…...

Transformer: Attention Is All You Need (2017) 翻译

论文:Attention Is All You Need 下载地址如下: download: Transformer Attention Is All you need Attention Is All You Need 中文 《Attention Is All You Need》是《Transformer》模型的开创性论文,提出了一种全新的基于注意力机制的架构&#xf…...

【记录】Django解决与VUE跨域问题

1 梗概 这里记录Django与VUE的跨域问题解决方法,主要修改内容是在 Django 中。当然其他的前端项目 Django 也可以这样处理。 2 安装辅助包 pip install django-cors-headers3 配置 settings.py INSTALLED_APPS [ # ... corsheaders, # ... ] 为了响应…...

Java 常见Exception异常解决方法

在Java编程中,异常处理是确保程序稳定性和健壮性的重要部分。了解常见的异常类型及其解决方法,可以帮助你编写更加健壮的代码。以下是一些常见的Java异常及其解决方法: NullPointerException:空指针异常 原因:尝试访问…...

东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南

东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南 文章目录 东方通 TongWebV7 Docker 部署与 Spring Boot 集成指南 一 TongWeb V7二 Spring Boot JAR 配置文件三 修改 maven 依赖四 docker compose 启动项目五 查看 docker 信息 本文详细讲解了如何在 Docker 环境中…...

TIM输入捕获---STM

一、简介 IC输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存在CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模…...

【笔记】架构上篇Day6 法则四:为什么要顺应技术的生命周期?

法则四:为什么要顺应技术的生命周期? 简介:包含模块一 架构师的六大生存法则-法则四:为什么要顺应技术的生命周期?&法则四:架构设计中怎么判断和利用技术趋势? 2024-08-29 17:30:07 你好&am…...

MSF(Metasploit Framework)

渗透测试中MSF是一个非常强大的工具&#xff0c;可以用来验证系统漏洞、执行攻击以及开发自定义的漏洞利用代码。以下是使用MSF进行渗透测试的基本步骤&#xff1a; 1.启动MSF 启动MSF控制台。 msfconsole2. 搜索漏洞 在MSF中搜索已知漏洞。 search <vulnerability nam…...

Python中的OpenCV详解

文章目录 Python中的OpenCV详解一、引言二、OpenCV基础操作1、OpenCV简介2、安装OpenCV3、图像读取与显示 三、图像处理技术1、边缘检测2、滤波技术 四、使用示例1、模板匹配 五、总结 Python中的OpenCV详解 一、引言 在当今数字化社会中&#xff0c;图像处理和计算机视觉技术…...

IMX6ULL开发板学习嵌入式技术过程中为了测试本地网络是否正常而常用的Ping命令

Windows ip&#xff1a;192.168.5.10 Ubuntu ip&#xff1a;192.168.5.11 开发板 ip&#xff1a;192.168.5.9 最常用的 最常用的两个是开发板和Ubuntu的互ping 开发板→Ubuntu ping 192.168.5.11Ubuntu→开发板 ping 192.168.5.9完整的如下 Windows→Ubuntu ping 192.16…...

Blue Ocean 在Jenkins上创建Pipeline使用详解

BlueOcean是Jenkins的一个插件,它提供了一套可视化操作界面来帮助用户创建、编辑Pipeline任务。以下是对BlueOcean中Pipeline操作的详细解释: 一、安装与启动BlueOcean 安装:在Jenkins的“系统管理”->“插件管理”->“可选插件”中搜索“BlueOcean”,然后点击“Ins…...

2024 年最新前端ES-Module模块化、webpack打包工具详细教程(更新中)

模块化概述 什么是模块&#xff1f;模块是一个封装了特定功能的代码块&#xff0c;可以独立开发、测试和维护。模块通过导出&#xff08;export&#xff09;和导入&#xff08;import&#xff09;与其他模块通信&#xff0c;保持内部细节的封装。 前端 JavaScript 模块化是指…...

photoshop的2个形状-箭头

有时候用ps画一些教程类图文&#xff0c;需要用到箭头. 另外自己画了一个镂空的长方形和正方形 形状的路径一般在Custom Shapes文件夹内 例如 E:\photoshopCS4\Adobe Photoshop CS4\Presets\Custom Shapes...

【经验分享】搭建本地训练环境知识点及方法

最近忙于备考没关注&#xff0c;有次点进某小黄鱼发现首页出现了我的笔记还被人收费了 虽然我也卖了一些资源&#xff0c;但我以交流、交换为主&#xff0c;笔记都是免费给别人看的 由于当时刚刚接触写的并不成熟&#xff0c;为了避免更多人花没必要的钱&#xff0c;所以决定公…...

AI知识-多模态(Multimodal)

摘要 本文将探讨多模态&#xff08;Multimodal&#xff09;的概念&#xff0c;包括其通俗理解、技术原理、应用场景&#xff0c;以及进行总结。我们将通过一个简要的介绍来了解多模态技术&#xff0c;并深入探讨其在人工智能和机器学习领域的重要性。 通俗理解 多模态&#x…...

代码随想录 leetcode-数据结构刷题笔记

文章目录 一、数组1.1 二分查找 1.1.1 二分查找 1.1.2 搜索插入位置1.1.3 排序数组中查找元素第一和最后一个位置1.1.4 x的平方根 1.1.5 有效的完全平方数 1.2 快慢指针 1.2.1 移除元素 1.2.2 删除有序数组中的重复项 1.2.3 移动0 1.2.4 比较含退格的字符串 1.2.5 有序数组的平…...

Oracle最佳实践-优化硬解析

前段时间参加oracle CAB&#xff0c;oracle高级服务部门做了一个数据库最佳实践的报告&#xff0c;其中就有一项就是解决未使用绑定变量但执行次数很多的SQL&#xff1b; 对于一个数据库来说如果不知道该如何优化&#xff0c;那么最简单最有效的优化就是减少硬解析&#xff0c;…...

Windows中将springboot项目运行到docker的容器中

0&#xff0c;先打包好项目&#xff0c;再启动docker 1&#xff0c;在Java项目根目录下创建一个名为Dockerfile的文件&#xff08;没有扩展名&#xff09;&#xff0c;并添加以下内容。 # 使用OpenJDK的基础镜像 FROM openjdk:8-jdk-alpine# 设置工作目录 WORKDIR /app# 将项…...

30、使用ESP8266跟SG90舵机制作四足蜘蛛机器人

目录 1、简介 2、使用例子 3、代码解析 4、资源下载 正文 1、简介 本篇使用ESP8266跟SG90舵机制作四足蜘蛛机器人,使用的180度舵机有8个,需要一块16路舵机控制板,也可以使用小一点的控制板8路也够了。下面开始今天的教程,源码在文章末尾自行下载,力求大家都能看懂。…...

相比普通LED显示屏,强力巨彩软模组有哪些优势?

在科技技术的加持下&#xff0c;LED显示屏市场各类创新产品层出不穷&#xff0c;为市场带来了无限可能。其中&#xff0c;强力巨彩R系列H版&#xff08;软模组&#xff09;凭借其独特的技术优势&#xff0c;在行业内脱颖而出。那么&#xff0c;相比常规LED显示屏&#xff0c;强…...

利用ngx_stream_return_module构建简易 TCP/UDP 响应网关

一、模块概述 ngx_stream_return_module 提供了一个极简的指令&#xff1a; return <value>;在收到客户端连接后&#xff0c;立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量&#xff08;如 $time_iso8601、$remote_addr 等&#xff09;&a…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

ardupilot 开发环境eclipse 中import 缺少C++

目录 文章目录 目录摘要1.修复过程摘要 本节主要解决ardupilot 开发环境eclipse 中import 缺少C++,无法导入ardupilot代码,会引起查看不方便的问题。如下图所示 1.修复过程 0.安装ubuntu 软件中自带的eclipse 1.打开eclipse—Help—install new software 2.在 Work with中…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

Redis:现代应用开发的高效内存数据存储利器

一、Redis的起源与发展 Redis最初由意大利程序员Salvatore Sanfilippo在2009年开发&#xff0c;其初衷是为了满足他自己的一个项目需求&#xff0c;即需要一个高性能的键值存储系统来解决传统数据库在高并发场景下的性能瓶颈。随着项目的开源&#xff0c;Redis凭借其简单易用、…...

解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用

在工业制造领域&#xff0c;无损检测&#xff08;NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统&#xff0c;以非接触式光学麦克风技术为核心&#xff0c;打破传统检测瓶颈&#xff0c;为半导体、航空航天、汽车制造等行业提供了高灵敏…...

Scrapy-Redis分布式爬虫架构的可扩展性与容错性增强:基于微服务与容器化的解决方案

在大数据时代&#xff0c;海量数据的采集与处理成为企业和研究机构获取信息的关键环节。Scrapy-Redis作为一种经典的分布式爬虫架构&#xff0c;在处理大规模数据抓取任务时展现出强大的能力。然而&#xff0c;随着业务规模的不断扩大和数据抓取需求的日益复杂&#xff0c;传统…...

Leetcode33( 搜索旋转排序数组)

题目表述 整数数组 nums 按升序排列&#xff0c;数组中的值 互不相同 。 在传递给函数之前&#xff0c;nums 在预先未知的某个下标 k&#xff08;0 < k < nums.length&#xff09;上进行了 旋转&#xff0c;使数组变为 [nums[k], nums[k1], …, nums[n-1], nums[0], nu…...