node.js--fs 文件系统

目录

概述:

同步文件写入

异步文件写入

简单的文件写入

简单流式文件读取

文件模块的其他操作


概述:

通过node操作系统中的文件

同步文件写入

/***
 * 在 Node 中,文件系统的交互是非常重要的,服务器的本质就将本地的文件发送给远程的客户端
 * Node 通过 fs 模块来和文件系统进行交互
 * 该模块提供了一些标准文件访问 API 来打开、读取、写入文件,以及与其交互。
 * 要使用 fs 模块,首先需要对其进行加载一 const fs = require ( " fs " ) ;
 * */
//引入fs模块
var fs = require("fs");
console.log(fs)
/**
* 同步和异步调用一 fs 模块中所有的操作都有两种形式可供选书同步和异步。
 * · 同步文件系统会阻塞程序的执行,也就是除非操作完毕,否则不会向下执行代码。
 * · 异步文件系统不会阻塞程序的执行,而是在操作完成时,通过回调函数将结果返回。
* */

/**
 * 文件的写入
 *  1. 打开文件
 *      fs.openSync(path,flags,[,mode])
 *          path: 要打开的路径
 *          flags 打开文件要做的操作类型 r 只读的 w 可写的
 *          mode 设置文件的操作权限,一般不传
 *      该方法会返回一个文件描述符,我们可以根据这个描述符对文件进行各种操作
 *   2.像文件中写入内容
 *      fs.writeSync(fd,string[,position[,encoding]])
 *          fd 文件的描述符
 *          string 要写入的内容
 *   3.保存并关闭文件
 *      fs.closeSync(fd)
 *          fd 文件的描述符
 * */
var fd = fs.openSync("fs.txt","w");
console.log(fd)
fs.writeSync(fd,"假如你看到了我,也不要太过冷漠")
fs.closeSync(fd)

异步文件写入

//引入fs模块
var fs = require("fs");
//异步调用的方法都是通过回调函数的参数 arguments 返回的
var fd = fs.open("fs2.txt","w",function (err,fd) {
    /**
     *  err 错误标识,如果是null则正常
     *  fd 文件描述符
     */
    console.log(err)
    //文件打开正常
    if(!err){
        fs.write(fd,"也不要特别难过",function (error) {
            if(!error){
                console.log("写入成功")
            }
            //关闭文件
            fs.close(fd,function (errorc) {
                if(!errorc){
                    console.log("关闭成功")
                }
            })
        })
    }
});
console.log("是否是异步操作")

简单的文件写入

/**
 *  简单文件写入
 * **/
//异步
//引入fs模块
var fs = require("fs");
fs.writeFile("fs2.txt","异步简单",function (err) {
    if(!err){
        console.log("写入成功")
    }
    }
)
//同步
fs.writeFileSync("fs3.txt","同步简单")

简单流式文件读取

/**
 *  流式文件读取适用于一些比较大的文件,可以分多次将文件读取到内存中,可以分对此将文件读取到内存中
 * */
var fs  = require("fs");
//创建一个可读流
var rs = fs.createReadStream("D:/bushuangli/tempVideo/视频/03.尚硅谷_node基础_node简介.avi");
//创建一个可写流
var ws = fs.createWriteStream("b.avi")
//监听流的开起和关闭
rs.once("open",function () {
    console.log("可读流打开了-")
})
rs.once("close",function () {
    console.log("可读流关闭了-")
})
//监听流的开起和关闭
ws.once("open",function () {
    console.log("可写流打开了-")
})
ws.once("close",function () {
    console.log("可写流关闭了-")
})
//pipe() 可以将可读流中的内容,直接输出到可写流中
rs.pipe(ws);

文件模块的其他操作

//引入fs模块
var fs = require("fs");
//判断文件是否存在
var bexist = fs.existsSync("b2.avi");
var bexist2 = fs.existsSync("b.avi");
console.log(bexist);
console.log(bexist2);
//获取文件状态
fs.stat("b.avi",function (err,stat) {
    console.log(err)
    console.log(stat)
})
//删除文件
//fs.unlinkSync("b.avi");
//读取一个目录的目录结构
fs.readdir(".",function (err,files) {
    console.log(files);
})
//截断文件.改变文件指定的大小
//fs.truncateSync("fs2.txt",10)
//创建一个目录
//fs.mkdirSync("hello");
//删除一个目录
//fs.rmdirSync("hello");
//重命名文件夹
/*fs.renameSync("a.png","aa.png",function (err) {
    if(!err){
        console.log("rename")
    }
})*/
//剪切移动
/*
fs.renameSync("aa.png","D:\\bushuangli\\tempVideo\\视频\\aa.png",function (err) {
    if(!err){
        console.log("rename")
    }
})*/
//监视文件的修改
/**
 * interval 监听间隔 毫秒
 */
fs.watchFile('fs2.txt',{interval:1000}, (curr, prev) => {
    console.log(`当前的最近修改文件大小是: ${curr.size}`);
    console.log(`之前的最近修改文件大小是: ${prev.size}`);
    console.log(`当前的最近修改时间是: ${curr.mtime}`);
    console.log(`之前的最近修改时间是: ${prev.mtime}`);
});
扫描二维码关注公众号,回复: 12037524 查看本文章

猜你喜欢

转载自blog.csdn.net/adminBfl/article/details/107179813