当前位置:网站首页>nodeJs--fs模块
nodeJs--fs模块
2022-07-30 11:37:00 【H5_ljy】
文章目录
一、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('复制成功')
}
})


边栏推荐
- C语言 — 位运算操作
- contentDocument contentWindow,canvas 、svg,iframe
- 11 年膨胀 575 倍,微信为何从“小而美”变成了“大而肥”?
- MySQL——数据库基础
- Matlab基础(0)——命令行常用指令
- 反转链表-迭代反转法
- 程序环境和预处理(详解)
- Scheduling of combined electric-heating system based on multi-objective two-stage stochastic programming method
- Underwater target detection method based on spatial feature selection
- decodeURIComponent()、eval()、encodeURIComponent()
猜你喜欢
随机推荐
Matlab基础(3)——元胞与结构体
11 年膨胀 575 倍,微信为何从“小而美”变成了“大而肥”?
C#调用explorer.exe打开指定目录
Digital input and output module DAM-5088
Farmers on the assembly line: I grow vegetables in a factory
流水线上的农民:我在工厂种蔬菜
【32. 图中的层次(图的广度优先遍历)】
小心 transmittable-thread-local 的这个坑
External Force Estimation Based on Time Delay Estimation with Perturbed Kalman Filter
SCM engineers written questions induction summary
Vim plugin GrepIt
Kubernetes 入门实战03 中级篇
Redis 主从复制
Matlab绘图(1)——二维绘图
Verilog语法基础HDL Bits训练 07
概率论得学习和整理6:概率的分布
I built another wheel: GrpcGateway
不用if分支对同一个变量做判断的方法
Microsoft SQL server hacked, bandwidth stolen
文本的对齐方式、行高、空间 等总结









