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);
    }
});
posted @ 2022-03-22 18:10  青仙  阅读(689)  评论(0编辑  收藏  举报