Node.js学习笔记(五)—— fs文件系统(Part1)

fs——文件系统

  • 在Node中,与文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端
  • Node通过fs模块来和文件系统进行交互
  • 该模块提供了一些标准文件访问API来打开、 读取、写入文件,以及与其交互。
  • 要使用fs模块,首先需要对其进行加载 const fs = require("fs");

同步和异步调用

fs模块中所有的操作都有两种形式可供选择同步和异步。

  • 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码。
  • 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回。

打开&关闭文件(同步)

 fs.openSync(path, flags[, mode])
 fs.closeSync(fd)

打开&关闭文件(异步)

 fs.open(path, flags[, mode], callback)
 fs.close(fd, callback)

打开状态

模式 说明
r 读取文件, 文件不存在则出现异常
r+ 读写文件, 文件不存在则出现异常
rs 在同步模式下打开文件用于读取
rs+ 在同步模式下打开文件用于读写
w 打开文件用于写操作 , 如果不存在则创建,如果存在则截断
wx 打开文件用于写操作 , 如果存在则打开失败
w+ 打开文件用于读写 ,如果不存在则创建 ,如果存在则截断
wx+ 打开文件用于读写 , 如果存在则打开失败
a 打开文件用于追加 , 如果不存在则创建
ax 打开文件用于追加 , 如果路径存在则失败
a+ 打开文件进行读取和追加 , 如果不存在则创建该文件
ax+ 打开文件用于读取和追加 , 如果路径存在则失败

一、同步文件写入

1.打开文件

fs.openSync(path, flags[, mode])
	- path 要打开文件的路径
	- flags 打开文件要做的操作的类型
		r 只读的
		w 可写的
	- mode 设置文件的操作权限,一般不传
 返回值:
 - 该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作

2.向文件中写入内容

fs.writeSync(fd, string[, position[, encoding]])
	- fd 文件的描述符,需要传递要写入的文件的描述符
	- string 要写入的内容
	- position 写入的起始位置
	- encoding 写入的编码,默认utf-8

3.保存并关闭文件

fs.closeSync(fd)
	- fd 要关闭的文件的描述符

在这里插入图片描述

二、异步文件写入

1.打开文件

fs.open(path, flags[, mode], callback)
- 用来打开一个文件
- 异步调用的方法,结果都是通过回调函数的参数返回的
- 回调函数两个参数:
	err 错误对象,如果没有错误则为null
	fd  文件的描述符

2.向文件中写入内容

// - 用来异步写入一个文件
fs.write(fd, string[, position[, encoding]], callback)

3.保存并关闭文件

// - 用来关闭文件
fs.close(fd, callback)
具体示例:
//引入fs模块
var fs = require("fs");


//打开文件
fs.open("hello2.txt","w",function (err , fd) {
    
    
	console.log("回调函数里的代码");
	//判断是否出错
	if(!err){
    
    
		//如果没有出错,则对文件进行写入操作
		fs.write(fd,"这是异步写入的内容",function (err) {
    
    
			if(!err){
    
    
				console.log("写入成功~~");
			}
			//关闭文件
			fs.close(fd , function (err) {
    
    
				if(!err){
    
    
					console.log("文件已关闭~~~");
				}
			});
		});
	}else{
    
    
		console.log(err);
	}
});

console.log("fs.open之后的代码~~~比回调函数里的代码先执行");
  输出:
 	fs.open之后的代码~~~比回调函数里的代码先执行
 	回调函数里的代码 
 	写入成功~~~~ 
 	文件已关闭~~~

猜你喜欢

转载自blog.csdn.net/qq_32755875/article/details/109728642