上篇介绍了关于文件的打开和信息获取方式,本篇介绍文件的读取和写入。
1.读取:支持同步和异步,另外还有读取的方式不同,读取指定的部分数据,读取文件的全部内容。
/**
* 文件操作:打开、读取、写入以及文件信息的获取
*/
const fs = require("fs");
const path = require("path");
//目标文件
var targetFilePath = path.join(__dirname,"HelloWorld.txt");
//【同步】打开文件,以读写的模式打开文件
if(fs.existsSync(targetFilePath))
{
var fd = fs.openSync(targetFilePath,"r+");
console.log("[同步]文件:",targetFilePath,"打开成功!");
//1.读取指定部分的数据
var buf = Buffer.alloc(24);
var bytes = fs.readSync(fd,buf,0,buf.length,null);
console.log("【同步】读取的部分内容:",buf.slice(0,bytes).toString("utf8"));
//2.读取文件的全部内容
var buf2 = fs.readFileSync(targetFilePath);
console.log("【同步】读取的文件内容:",buf2.toString("utf8"));
fs.closeSync(fd);
}else
{
console.log("文件:",targetFilePath,"不存在!");
}
//【异步】文件打开,以读的模式打开文件,如果文件不存在则抛出异常
fs.open(targetFilePath,"r",(err,fd)=>{
if(err)
{
return console.error(err);
}
console.log("[异步]文件:",targetFilePath,"打开成功!");
//1.读取指定部分的数据
var buf = Buffer.alloc(24);
fs.read(fd,buf,0,buf.length,0,(err,bytes)=>{
//读取错误处理
if(err)
{
fs.closeSync(fd);
return console.log(err);
}
console.log("打开文件读取的字节长度:",bytes);
if(bytes > 0)
{
console.log("【异步】读取的部分内容:",buf.slice(0,bytes).toString("utf8"));
}
});
//2.读取文件的全部内容
fs.readFile(targetFilePath,(err,data)=>{
if(err) throw err;
console.log("【异步】读取文件内容:",data.toString());
});
fs.closeSync(fd);
});
运行结果如下:
2.写入:支持同步和异步,写入方式:覆盖式写入,追加式写入,将数据写入文件指定的位置。
/**
* 文件操作:打开、读取、写入以及文件信息的获取
*/
const fs = require("fs");
const path = require("path");
//目标输出路径
var targetOutPath = path.join(__dirname,"input.txt");
//【同步】文件写入,以读写的模式打开文件,如果文件不存在则创建
var fd = fs.openSync(targetOutPath,"w+");
//1.将数据写入文件指定的位置
//--Buffer对象写入
var buf = Buffer.from("Tonny");
fs.writeSync(fd,buf,0,buf.length,0);
//--字符串写入
fs.writeSync(fd," is girl.",buf.length,"utf8");
//2.尾部追加
fs.appendFileSync(targetOutPath,"NaNa!");
//3.覆盖式写入
fs.writeFileSync(targetOutPath,"I am new content!");
fs.closeSync(fd);
//【异步】文件写入,以读写模式打开文件,如果文件不存在则创建
fs.open(targetOutPath,"w+",(err,fd)=>{
if(err) throw err;
//1.将数据写入文件指定的位置
//--Buffer对象写入
var buf = Buffer.from("Tonny");
fs.write(fd,buf,0,buf.length,0,(err,written,buffer)=>{
if(err) throw err;
console.log("Buffer对象写入文件:",buffer.toString("utf8"));
});
//--字符串写入
fs.write(fd," is gay!",buf.length,"utf8",(err,written,str)=>{
if(err) throw err;
console.log("字符串写入文件:",str);
});
//2.尾部追加
fs.appendFile(targetOutPath," HaHa!",(err)=>{
if(err) throw err;
console.log("文件尾部追加:"," HaHa!");
});
//3.覆盖式写入
fs.writeFile(targetOutPath,"I am wrriten!",(err)=>{
if(err) throw err;
console.log("文件覆盖写入:","I am wrriten!");
});
fs.closeSync(fd);
});
【注意】通过注释部分代码方式,运行查看结果。
【同步API】
【异步API】
以上是关于文件的读取和写入的操作介绍,会在下一篇文章中介绍文件的其他操作如删除、重命名以及复制等。