nodeJs--fs模块


一、fs模块是什么

跟http模块一样,fs模块也是node的核心模块之一,主要用于对系统文件及目录进行读写操作。

二、常用方法

操作方法
打开文件fs.open(path, flags[, mode], callback)
文件信息fs.stat(path[, options], callback)
新建文件fs.appendFile(path, data[, options], callback)
写入文件fs.writeFile(file, data[, options], callback)
读取文件fs.read(fd, buffer, offset, length, position, callback)
读取文件fs.readFile(path[, options], callback)
重命名文件fs.rename(oldPath, newPath, callback)
关闭文件fs.close(fd, callback)
截取文件fs.ftruncate(fd[, len], callback)
删除文件fs.unlink(path, callback)
文件存在fs.stat() / fs.access()
监听文件fs.watchFile(filename[, options], listener)
停止监听fs.unwatchFile(filename[, listener])
打开大文件fs.createReadStream(path[, options])
写入大文件fs.createWriteStream(path[, options])
创建目录fs.mkdir(path[, options], callback)
读取目录fs.readdir(path[, options], callback)
删除目录fs.rmdir(path, callback)

fs.read和fs.readFile方法的比较

fs.read()读取文件数据
语法格式:
fs.read(fd, buffer, offset, length, position, callback)
从文件描述符fd中读取文件数据。
fd - 通过 fs.open() 方法返回的文件描述符。
buffer - 数据写入的缓冲区。
offset - 缓冲区写入的写入偏移量。
length - 要从文件中读取的字节数。
position - 文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。
callback - 回调函数,有三个参数err, bytesRead, buffer,err 为错误信息, bytesRead 表示读取的字节数,buffer 为缓冲区对象。

使用fs.read()方法读取文件内容时,首先需要一个文件描述符fd,fs.read()方法可以实现部分文件内容的读取。通过length和position参数可以指定读取文件内容的长度和读取内容的起始位置。

var fs = require("fs");
var buf = new Buffer.alloc(1024);

console.log("准备打开已存在的文件!");
fs.open('./2.html', 'r+', function(err, fd) { 
   if (err) {
       return console.error(err);
   }
   console.log("文件打开成功!");
   console.log("准备读取文件:");
   fs.read(fd, buf, 0, buf.length, 0, function(err, bytes){
      if (err){
         console.log(err);
      }
      console.log(bytes + "  字节被读取");
      
      // 仅输出读取的字节
      if(bytes > 0){
         console.log(buf.slice(0, bytes).toString());
      }
   });
});

在这里插入图片描述

fs.readFile()读取文件内容
fs.readFile(filename[, options], callback)
读取文件的全部内容
filename表示要读取的文件
callback回调函数有2个参数 (err, data),参数 data 是文件的内容。如果没有指定参数encoding, 则返回值为Buffer。注意:res.end()方法接受 字符串或者buffer
fs.readFile()方法能且只能读取文件的全部内容,通过设置编码方式可以以字符串或Buffer的形式返回读结果。

var http=require("http")
var fs=require("fs")
http.createServer((req,res)=>{
	fs.readFile("./1.html",(err,data)=>{
		if(!err){
			console.log(data)
		}else{
			console.log(err)
		}
	})
}).listen(8081)

在这里插入图片描述

小结:fs.readFile()方法是对fs.read()方法的进一步封装,fs.readFile()方法可以方便的读取文件的全部内容。相比fs.readFile()方法,使用fs.read()方法读取文件的全部内容可操作性要强很多。首先要用fs.stat判断文件的大小,然后使用fs.open()创建文件描述符,最后再使用fs.read()方法读取文件内容。

fs.writeFile

格式:fs.writeFile(path ,data,callback(err))
如果文件存在,该方法写入的内容会覆盖旧的文件内容,不存在就创建一个新的文件
path - 文件路径
data - 要写入文件的数据,可以是 String(字符串)
callback - 回调函数,回调函数只包含错误信息参数(err),在写入失败时返回。

var fs = require("fs");
fs.writeFile("./test.txt","ljy666",(err)=>{ //没有这个文件就创建
	if(err){
		console.log(err)
	}else{
		console.log("执行成功")
	}
})

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

fs.stat

fs.stat可以用来判断是文件还是目录:stats.isFile()用于检测是否是文件,stats.isDirectory()用于检测是否是目录,两个都返回布尔值。

var fs = require("fs");
fs.stat("./test.txt",(err,stats)=>{
	if(err){
		console.log(err)
	}else if(stats.isFile()){
		console.log("test.txt是文件")
	}else if(stats.isDirectory()){
		console.log("test.txt是目录")
	}
})

在这里插入图片描述

fs.mkdir

fs.mkdir可以用来创建目录,该方法能接受sane参数:path(将创建的目录路径),mode(读写权限,默认0777),callback(异常回调)

var fs = require("fs");
fs.mkdir("img",(err)=>{
	if(err){
		console.log(err)
	}else {
        console.log('创建成功')
	}
})

在这里插入图片描述

在这里插入图片描述

fs.appendFile

fs.appendFile用于向文件内追加内容。
在进行内容追加的时候,如果目标文件不存在,会先创建文件,然后添加内容。

var fs = require("fs");
fs.writeFile("test1","666666",(err)=>{
	if(err){
		console.log(err)
	}else {
        console.log('创建成功')
	}
})

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

fs.readdir

fs.readdir用于读取目录,能够同时获取目录下的文件和文件夹,返回一个包含文件名和文件夹名称的数组。

var fs = require("fs");
fs.readdir("../练习",(err,files)=>{
	if(err){
		console.log(err)
	}else {
        console.log(files)
	}
})

在这里插入图片描述

fs.rename

移动/重命名文件或目录:整个功能相当于重命名一个文件/文件夹路径
语法格式:
fs.rename(oldPath, newPath, callback);
oldPath, 原目录/文件的完整路径及名;
newPath, 新目录/文件的完整路径及名;如果新路径与原路径相同,而只文件名不同,则是重命名
callback(err), 操作完成回调函数;err操作失败对象
移动文件有一个bug:新路径和旧路径必须是同一个根盘

var fs = require("fs");
fs.rename("1.html","img/3.html",(err)=>{
	if(err){
		console.log(err)
	}else{
		console.log("移动成功")
	}
})

在这里插入图片描述
在这里插入图片描述

fs.rmdir

fs.rmdir用于删除文件夹。用该方法来删除文件或者不存在的文件夹的时候会报错。如果文件夹下面有文件或文件夹则也会报错。

var fs = require("fs");
fs.rmdir("img",(err)=>{
	if(err){
		console.log(err)
	}else{
		console.log("文件夹删除成功")
	}
})

在这里插入图片描述

fs.unlink

fs.unlink用于删除文件。如果使用该方法删除文件夹或者不存在的文件的时候,也会报错。

var fs = require("fs");
fs.unlink("test1",(err)=>{
	if(err){
		console.log(err)
	}else{
		console.log("文件夹删除成功")
	}
})

在这里插入图片描述

fs.copyFile

用来拷贝文件
语法:
fs.copyFile(oldPath, newPath, callback);
oldPath, 原文件的完整路径;
newPath, 新文件的完整路径;
callback(err), 操作完成回调函数;err操作失败对象
拷贝文件以后两个文件都会存在磁盘中

var fs=require("fs")
fs.copyFile("test.txt","img/test.txt",(err)=>{
        if(err){
			console.log(err)
		}else{
			console.log('复制成功')
		}
})

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

H5_ljy

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值