目标
- 能够实现文件读写操作
提示:以下是本篇文章正文内容,下面案例可供参考
一、常用内置模块
1.1、fs文件读取
对于文件和目录操作,nodejs中有一个原则: 错误优先
引入内置模块,fs,path,os
代码如下(示例):
const fs = require('fs')
const path = require('path')
const os = require('os')
得到当前文件的绝对路径
代码如下(示例):
let filepath = path.join(__dirname, './data/1.txt')
let filepath = path.resolve('./data/1.txt')
读取文件中的内容
默认在没有指定读取后的文件编码时,它返回的是一个buffer字符流(理解为2进制)
对于err 参数,如果读取文件有错时,则为错误对象,如果没有错,则为null
代码如下(示例):
fs.readFile(filepath, (err, buffer) => {
if(err){
console.log('文件读取失败');
}else{
console.log(buffer.toString()); //默认字符集编码是utf-8
}
加上第二个参数,表示字符集编码格式
代码如下(示例):
fs.readFile(filepath, 'utf-8', (err, data) => {
if (err) {
console.log('文件读取失败');
} else {
console.log(data);
}
})
用promise方法(2种形式)
代码如下(示例):
var readFile = (filepath) => {
return new Promise((resolve, reject) => {
fs.readFile(filepath, 'utf-8', (err, data) => {
if (err) {
reject('文件读取失败@');
} else {
resolve(data);
}
})
})
}
let filepath = path.resolve('./data/1.txt');
; (async function () {
try {
let data = await readFile(filepath)
console.log(data);
} catch (error) {
console.log('异常')
}
})();
封装函数
代码如下(示例):
function readFile(filepath){
return new Promise((resolve,reject) => {
fs.readFile(filepath,'utf-8',(err,data) => {
if(err){
reject('文件异常');
}else{
resolve(data);
}
})
})
}
同步读取文件,通过自定义异常处理。
代码如下(示例):
let filepath = path.resolve('./data/1.txt')
try {
let data = fs.readFileSync(filepath, 'utf-8')
console.log(data);
} catch (error) {
console.log('没有找到');
}
1.2、fs文件写入
得到当前写入的目录,目录一定要真实,否则会失败
引入内置模块,fs,path,os
代码如下(示例):
const fs = require('fs');
const { resolve} = require('path')
const os = require('os');
获得绝对路径
let filepath = resolve('./data/2.txt');
同步操作
fs.writeFileSync(filepath,`我要操作啦${os.EOL}写入完成`);
console.log('写入操作完成')
异步操作
let str = 'fanfan是憨憨'
fs.writeFile(filepath,str,err => {
//写入失败为对象,写入成功为null
console.log(err)
})
查看当前目录下的文件
let dirpath = resolve('./data');
fs.readdir(dirpath,'utf-8',(err,data) => {
console.log(data)
})
判断当前路径查询的数据是文件还是文件夹 ,返回布尔值,如果是文件夹,返回true,如果是文件,返回false。
let stat = fs.statSync(resolve('./data/package'));
console.log(stat.isDirectory())
查看文件的相关属性
fs.stat(filepath, (err, stat) => {
// 文档属性对象
console.log(stat);
// 获取当前文件的最后修改时间(在写web服务器时作为浏览器缓存设置的标识)
console.log(stat.mtime);
// 判断是否为文件
console.log(stat.isFile());
// 判断是否为目录
console.log(stat.isDirectory());
// 文件大小 kb
console.log(Number((stat.size / 1024).toFixed(2)));
})
总结
以上就是今天要分享的内容,本文仅仅简单介绍了fs的文件读取和写入,每天学习多一点新知识,多敲一行代码,就是进步。