1、读取
读取(read)
参数:
fd:通过fs.open()方法返回的文件描述符
buffer:数据写入的缓冲区
offset:缓冲区写入的写入偏移量
length:要从文件中读取的字节数
position:文件读取的起始位置,如果值为null,则会从当前文件指针的位置读取。
callback:回调函数,有三个参数err,bytesRead ,buffer; err为错误信息,bytesRead表示读取的字节数,buffer为缓冲区对象
let buff = Buffer.alloc(0);//创建一个大小为0的缓冲区
let buffer = Buffer.alloc(1024);
fs.open("./windy/BeyondTheSky.txt", "r+", (err, fd) => {
if (err)
throw err;
let count = 0;
console.log("文件打开,开始读取");
let readFile = () => {
fs.read(fd, buffer, 0, buffer.length, buffer.length * count, (err, bytes) => {
if (err)
throw err;
if (bytes > 0) {
console.log(count);
buff = Buffer.concat([buff, buffer.slice(0, bytes)]);
count++;
readFile();
}
else {
fs.close(fd, (error) => {
if (error) {
console.log("文件关闭失败");
}
else {
console.log("文件关闭成功");
console.log(buff.toString());
}
});
}
});
}
readFile();
});
res.end();
分析:
上图是分步读取,在读取大文件的时候使用;
首先创建缓冲区,然后用read读取,参数的作用在开头已写,然后做出判断,假如字节大于0,开始使用contact合并缓冲区,最后使用close关闭文件即可。
2、截取
截取 (ftruncate)
参数:
fd:通过fs.open()方法返回的文件描述符;
length:文件内容截取的长度;
callback:回调函数;
let buff =Buffer.alloc(1024);
console.log("打开文件!");
fs.open("./windy/BeyondTheSky.txt","r+",(err,fd)=>{
if(err)
throw err;
console.log("打开成功!");
fs.ftruncate(fd,1024,(error)=>{
if(error){
console.log("文件截取失败!");
}
else{
console.log("文件截取成功!");
}
});
fs.read(fd,buff,0,buff.length,0,(errinfo,bytesread)=>{
if(errinfo)
throw errinfo;
console.log(buff.toString());
});
});
res.end();
3、创建目录
创建目录(mkdir)
参数:
path:文件路径
callback:回调函数
4、删除目录
删除目录(rmdir)
参数:
path:文件路径
callback:回调函数
5、删除文件
删除文件(unlink)
参数:
path:文件路径
callback:回调函数
3、4、5案例:类似登录qq时会自动记录下qq号
let url = "./" + QQ;
fs.mkdir(url, (err) => {
if (err) {
console.log("该目录已经存在!");
fs.rmdir(url, (error) => {
if (error) {
console.log("删除失败");
fs.unlink(url + "/data.txt", (errinfo) => {
if (errinfo) {
console.log("文件删除失败");
}
else {
console.log("文件删除成功");
}
});
}
else {
console.log("删除成功");
}
})
}
else {
console.log("创建成功!");
fs.writeFile(url + "/data.txt", "数据", (err) => {
if (err) {
console.log("写入失败");
}
else {
console.log("写入成功!");
}
});
}
res.end();
})
结果:
在浏览器上写入/?QQ=.....回车
接着继续输入上面,会首先删除文件,接着继续输一次就会删除目录
6、文件重命名
文件重命名(rename)
参数:
oldpath:旧文件名
newpath:新文件名
callback:回调函数
fs.rename("./Friday","./Monday",(err)=>{
if(err){
console.log("命名失败")
}
else{
console.log("命名成功")
}
res.end();
})
7、文件追加写入
文件追加写入(appendFile)
参数:
path:要追加文件的路径
data:要追加的信息
callback:回调函数
fs.appendFile("./windy/BeyondTheSky.txt","奈何故里无故人",(err)=>{
if(err){
console.log("追加失败")
}
else{
console.log("追加成功")
}
res.end()
})