path
表示的路径
通过path可以用来获取各种路径,要使用path,需要先对其进行引用
方法:
path.resolve([...paths]),用来生成绝对路径
相对路径:./xxx ../xxx xxx
绝对路径:在计算机本地c:\xxx/;在网络中http://www.xxx/...
如果直接调用resolve,会返回当前的工作目录
注:我们通过不同的方式执行代码时,它的工作目录有可能发生变化
如果将一个相对路径作为参数,则resolve会自动将其转化为绝对路径,此时根据工作目录不同,它所产生的绝对路径也不同。
一般会将一个绝对路径作为第一个参数,一个相对路径作为第二个参数,它会自动计算出最终路径
const result = path.resolve(
"D:\\前端\\Node.js\\03_包管理器",
"../../hello.js")
最终形态:以后在使用路径时,尽量通过path.resolve生成路径
const result = path.resolve(__dirname,"./hello.js")
console.log(result)
fs (File System)
fs用来帮助node来操作磁盘中的文件,文件操作也就是所谓的I/O,input output;
使用fs模块,同样需要引用
const fs = require("node:fs/promises");
const { buffer } = require("stream/consumers");
const { log } = require("node:console");
Promise版本的fs的方法
fs.readFile(path.resolve(__dirname,"./hello.txt"))
.then(buffer =>{
console.log(buffer.toString());
})
.catch(e =>{
console.log("出错了");
})
;(async () =>{
try{
const buffer =await fs.readFile(path.resolve(__dirname,"./hello.txt"))
console.log(buffer.toString())
}catch(e){
console.log("出错了");
}
})()
readFileSync() 同步的读取文件的方法,会阻塞后边的代码的执行
当我们通过fs模块读取磁盘中的数据时,读取到的数据总会以Buffer对象的形式返回
Buffer() 是一个临时用来存储数据的缓冲区
const buf = fs.readFileSync(path.resolve(__dirname,"./hello.txt"))
console.log(buf.toString());
readFile() 异步的读取文件的方法
fs.readFile(
path.resolve(__dirname, "./hello.txt"),
(err, buffer) => {
if (err) {
console.log("出错了");
} else {
console.log(buffer.toString());
}
}
)
console.log("后续代码");
fs.appendFile() 创建新文件,或将数据添加到已有文件中
fs.mkdir() 创建目录
fs.rmdir() 删除目录
fs.rm() 删除文件
fs.rename() 重命名
fs.copyFile() 复制文件
fs.appendFile()
fs.appendFile(
path.resolve(__dirname, "./hello.txt"),
"超哥讲的真不错"
).then(r =>{
console.log("添加成功");
})
复制文件
"C:\Users\34318\Desktop\微信图片_20230315183528.jpg"
fs.readFile("C:\\Users\\34318\\Desktop\\微信图片_20230315183528.jpg")
.then(buffer => {
return fs.appendFile(
path.resolve(__dirname, "./haha.jpg"),
buffer
)
})
.then(()=>{
console.log("操作结束");
})
fs.mkdir()
mkdir 可以接收一个配置对象作为第二个参数,通过该对象可以对方法的功能进行配置
recursive 默认值为false,设置true后,会自动创建不存在的上一级目录
fs.mkdir(path.resolve(__dirname, "./hello/abc"), { recursive: true })
.then(r => {
console.log("操作成功");
})
.catch(e => {
console.log("创建失败");
})
fs.rmdir()
fs.rmdir(path.resolve(__dirname,"./hello"), { recursive: true })
.then(r =>{
console.log("删除成功");
})
fs.rename()
fs.rename(
path.resolve(__dirname,"../an.jpg"),
path.resolve(__dirname,"./an.jpg")
).then(r =>{
console.log("重命名成功");
})