一.fs模块的同步和异步
使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式。
异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,该参数为null或undefined。
异步写法有一个回调函数,同步方法加Sync
同步方法执行完并返回结果后,才能执行后续的代码。而异步方法采用回调函数接收返回结果,可以立即执行后续代码。
二.fs模块读取异步
var fs = require('fs'); // 引入fs模块
fs.readFile('./test.txt', function(err, data) {//异步,同步方法:readFileSync
// 读取文件失败/错误
if (err) {
throw err;
}
// 读取文件成功(显示原始二进制编码,要显示文件内容可以使用toString()或者设置输出编码。)
console.log(data);
});
设置输出编码
fs.readFile('文件名','utf-8',function(err,data){
if(err){
throw err
}
console.log(data)
})
三.fs模块写入文件内容(如果没有会创建文件,写入时会清空文件,flag是追加参数,默认是w(写),r是读取,a是追加)
var fs=require('fs')
fs.writeFile('文件名',‘内容’,{flag:w},function(err,data){//同步:writeFileSync
if(err){
throw err
}
console.log(data)
})
四.fs模块的fs.read和fs.write
fs.read和fs.write也用于读写文件,但提供更底层的操作,实际应用中多用fs.readFile和fs.writeFile,
但使用fs.read和fs.write需要fs.open和fs.colse打开和关闭文件
fs.read(fd,buffer,offset,length[,position],callback(err,bytesWritten,buffer))接收6个参数。
参数说明:
* fd 文件描述符,必须接收fs.open()方法中的回调函数返回的第二个参数。
* buffer 是存放 将被写入的数据,buffer尺寸的大小设置最好是8的倍数,效率较高。
* offset **buffer写入的偏移量**。
* length (integer)指定 写入文件中数据的**字节数**。
* position (integer) 指定 在写入文件内容的**起始位置**。
* callback 回调函数,参数如下
* err 用于抛出异常
* bytesWritten从文件中读取内容的**实际字节数**。
* buffer 被读取的缓存区对象。
var fs = require('fs'); // 引入fs模块
// 打开文件
fs.open('./testwrite.txt', `w`, function(err, fd) {
if (err) { throw err;}
console.log('open file success.'); var buffer = new Buffer('shiyanlou'); // 读取文件
fs.write(fd, buffer, 0, 6, 0, function(err, bytesWritten, buffer) {
if (err) { throw err;}
console.log('write success.'); // 打印出buffer中存入的数据
console.log(bytesWritten, buffer.slice(0, bytesWritten).toString()); // 关闭文件
fs.close(fd);
});
});
四.fs模块的fs.open
fs.open(path路径,flags打开文件的方式,[mode]文件权限(可行参数默认是0666),callback回调函数)
flags的值及说明如下:
r:读取文件,文件不存在时报错
r+:读取并写入文件,文件不存在时报错
rs:以同步的方式读取文件,文件不存在时报错
rs+:以同步到方式读取并写入文件,文件不存在时报错
w:写入文件,文件不存在时创建,存在则清空内容
wx:写入文件,但文件不存在会报错
w+:读取并写入文件,文件不存在时创建,存在则清空内容
wx+:读取并写入文件,但文件不存在则报错
a:以追加方式写入文件,文件不存在时创建
ax:以追加方式写入文件,但文件存在时报错
a+:读取并追加写入文件,文件不存在时创建
ax+:读取并追加写入文件,但文件存在时报错
五.fs模块的fs.close(fs.close(fd,callback)fd是所打开文件的文件描述符)
fs.read(fd,buffer,offset,length,position,callback)接收6个参数。
参数说明:
fd 文件描述符,必须接收fs.open()方法中的回调函数返回的第二个参数。
buffer 是存放读取到的数据的Buffer对象。
offset 指定 向buffer中存放数据的起始位置。
length 指定 读取文件中数据的字节数。
position 指定 在文件中读取文件内容的起始位置。
callback 回调函数,参数如下
err 用于抛出异常
bytesRead 从文件中读取内容的实际字节数。
buffer 被读取的缓存区对象。
var fs = require('fs'); // 引入fs模块
// 打开文件
fs.open('./testread.txt', 'r', function(err, fd) {
if (err) {
throw err;
}
console.log('open file success.');
var buffer = new Buffer(255);
// 读取文件
fs.read(fd, buffer, 0, 10, 0, function(err, bytesRead, buffer) {
if (err) {
throw err;
}
// 打印出buffer中存入的数据
console.log(bytesRead, buffer.slice(0, bytesRead).toString());
// 关闭文件
fs.close(fd);
});
});
六.fs模块的fs.stat(检测是文件还是目录)
var fs=require('fs')
fs.stat(路径,function(err,data){
data.isFile()//是文件
data.isDirection()//是目录
})
七.fs模块的fs.mkdir(创建目录)
var fs=require('fs')
fs.mkdir(创建的目录路径,function(err,data){
})
八.fs模块的fs.appendFile(追加写入文件)
var fs=require('fs')
fs.appendFile(文件路径,function(err,data){//同步:appendFileSync
})
九.fs模块的fs.readdir(读取目录)
var fs=require('fs')
fs.appendFile(要读取的目录路径,function(err,data){
})
十.fs模块的fs.rename(重命名或移动文件)
var fs=require('fs')
fs.rename(原文件名称/路径,新文件名称/路径,function(err,data){
})
十一.fs模块的fs.rmdir(删除目录)
var fs=require('fs')
fs.rmdir(路径,function(err,data){
})
十二.fs模块的fs.uplink(删除文件)
var fs=require('fs')
fs.rmdir(路径,function(err,data){
})
十三.fs模块的fs.createReadStream(以流的方式读取文件)
var fs=require('fs')
fs.createReadStream(路径,function(err,data){
})
十四.fs模块的fs.createWriteStream(以流的方式读取文件)
var fs=require('fs')
var writestream= fs.createWriteStream(路径)
writestream.write()//写入内容
writestream.end()//标记文件末尾,才能监听写入完成事件
//监听写入完成事件
writeStream.on('finish',()=>{
console.log('写入完成')
})
十五.fs模块的fs.copyFile(将文件从原路径复制到现路径,如果该文件已存在则覆盖)
var fs=require('fs')
fs.copyFile("文件1", "文件2");
十六.fs模块的fs.exists(查看文件或文件夹是否存在)
var fs=require('fs')
fs.exists(路径);
十七.fs模块的fs.truncate(截取文件内容)
var fs=require('fs')
fs.truncate(路径,将文件截取到的大小,function()[
});
十八.fs模块的fs.watchFile(监听文件数据变化)
filename:文件的路径
options:配置对象
bigint:默认为 false
persistent:只要正在监视文件,进程是否应继续运行。默认为 true
interval:监听的间隔时间,默认为 5007
listener:回调函数,监听的文件被修改后调用,接收 2 个参数:
current:文件当前的状态,是 fs.status 对象
previous:文件修改前的状态,也是 fs.status 对象
var fs=require('fs')
fs.watchFile(路径,配置对象,function()[
});
十九.管道流
const fs = require('fs')
let readStream = fs.createReadStream('./data/write.txt')
let writeStream = fs.createWriteStream('./data/copy.txt')
readStream.pipe(writeStream)
网友评论