node基础_fs(文件系统)
fs(文件系统File System)
在Node中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端。文件系统简单来说就是通过node来操作系统中的文件。
Node通过fs模块来和文件系统进行交互。
该模块提供了一些标准文件访问API来打开、读取、写入文件,以及与其交互。
要使用fs模块,首先需要对其进行加载,fs模块是核心模块,直接引入不需要下载:const fs = require("fs");
同步和异步调用
fs模块中所有的操作都有两种形式可供选择:同步和异步。
同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码。
异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回。
同步文件写入
1,打开文件
fs.openSync(path,flags[, mode])
中括号([])阔起的内容表示可以有可以没有
path:要打开的文件路径
flags:打开文件要做的操作类型
r 只读的
w 可写的
mode 设置文件的操作权限,一般不传
该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作。
文件描述符是操作系统打开文件后给你的数字,代表这个文件在操作系统中的对象。
2,向文件中写入文件
fs.writeSync(fd, string[, position[, encoding]])
中括号([])阔起的内容表示可以有可以没有
fd:文件的描述符,需要传递要写入的文件的描述符
string:要写入的内容
position:表示要写入的起始位置。
encoding:写入的编码格式。
3,关闭打开的文件
fs.close(fd[, callback])
中括号([])阔起的内容表示可以有可以没有
fd:要关闭的文件的描述符
如:
//1,引入文件模块
let fs=require("fs");
//2,打开文件
let result=fs.openSync("test.txt","w");
//3,同步往文件写入内容
fs.writeSync(result,"今天天气真好",6);
//4,关闭文件,如果不关闭,打开的文件会一直在内存里运行,会造成资源浪费。
fs.closeSync(result);
异步文件写入
1、打开文件
fs.open(path,flags[, mode],callback)
中括号([])阔起的内容表示可以有可以没有
path:要打开的文件路径
flags:打开文件要做的操作类型
r 只读的
w 可写的
mode 设置文件的操作权限,一般不传
callback:回调函数。
异步调用的方法,结果都是通过回调函数的参数返回的。
回调函数callback的两个参数:
第一个参数er:错误对象,如果没有错误则返回null
第二个参数fd:文件的描述符
文件的状态(flags):
r 读取文件 , 文件不存在则出现异常
r+ 读写文件 , 文件不存在则出现异常
rs 在同步模式下打开文件用于读取
rs+ 在同步模式下打开文件用于读写
w 打开文件用于写操作 , 如果不存在则创建,如果存在则截断
wx 打开文件用于写操作, 如果存在则打开失败
w+ 打开文件用于读写, 如果不存在则创建, 如果存在则截断
wx+ 打开文件用于读写, 如果存在则打开失败
a 打开文件用于追加, 如果不存在则创建
ax 打开文件用于追加, 如果路径存在则失败
a+ 打开文件进行读取和追加, 如果不存在则创建该文件
ax+ 打开文件进行读取和追加,如果路径存在则失败
2,向文件中写入文件
fs.write(fd, string[, position[, encoding]],callback)
中括号([])阔起的内容表示可以有可以没有
fd:文件的描述符,需要传递要写入的文件的描述符
string:要写入的内容
position:表示要写入的起始位置。
encoding:写入的编码格式。
callback:回调函数。
3,关闭打开的文件
fs.close(fd[, callback])
中括号([])阔起的内容表示可以有可以没有
fd:要关闭的文件的描述符
比如:
//1,引入文件模块
let fs=require("fs");
//2,打开文件
fs.open("test.txt","w",function(error,fd){
if(!error){
//3,异步往文件写入内容
fs.write(fd,"今天天气真好",function(err){
if(!err){
console.log("写入成功");
}
//关闭打开的文件
fs.close(fd,function(err2){
console.log("文件关闭");
});
});
}else{
console.log(error);
}
});
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!