Node.js文件系统-文件操作(二)

上篇介绍了关于文件的打开和信息获取方式,本篇介绍文件的读取和写入。

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】

 

 以上是关于文件的读取和写入的操作介绍,会在下一篇文章中介绍文件的其他操作如删除、重命名以及复制等。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Data菌

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

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

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

打赏作者

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

抵扣说明:

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

余额充值