本篇介绍关于文件的操作:打开、读取、写入以及关于文件信息的获取。
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,"打开成功!");
}else
{
console.log("文件:",targetFilePath,"不存在!");
}
//【异步】文件打开,以读写的模式打开文件,如果文件不存在则抛出异常
fs.open(targetFilePath,"r+",(err,fd)=>{
if(err)
{
return console.error(err);
}
console.log("文件:",targetFilePath,"打开成功!");
});
运行结果如下:
上面是2种打开文件的方式,究竟是用同步或异步方式打开文件,视情况而定。
2.文件信息获取:fs的Stats对象提供了关于当前文件的详细信息。也分同步和异步方式。
/**
* 文件操作:打开、读取、写入以及文件信息的获取
*/
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,"打开成功!");
var stats = fs.statSync(targetFilePath);
console.log("stats对象:",stats);
}else
{
console.log("文件:",targetFilePath,"不存在!");
}
//【异步】文件打开,以读写的模式打开文件,如果文件不存在则抛出异常
fs.open(targetFilePath,"r+",(err,fd)=>{
if(err)
{
return console.error(err);
}
console.log("[异步]文件:",targetFilePath,"打开成功!");
//异步方式获取文件信息
fs.stat(targetFilePath,(err,stats)=>{
if(err) throw err;
console.log("stats对象:",stats);
console.log("是块设备?",stats.isBlockDevice());
console.log("是字符设备?",stats.isCharacterDevice());
console.log("是目录?",stats.isDirectory());
console.log("是文件?",stats.isFile());
console.log("是套接字?",stats.isSocket());
console.log("文件大小:",stats.size);
console.log("文件创建时间:",stats.birthtime);
});
});
运行结果如下:
本篇主要介绍文件打开和文件信息获取,关于文件其余操作会在新的文章做介绍!