node获取本地文件路径、写入文件、文件读取
0、引入
const fs = require('fs');
const path = require('path');
在这里插入代码片
1、文件写入
// 0、文件内容
let fileObj={}
// 1、获取根目录
let baseDir = "D:\\FileDir"; //保存的根路径
let FileLocation="/file/file.json";//保存的文件夹+文件名
const url = path.join(baseDir, FileLocation);
// 2、保存路径是否存在,不存在则逐级创建目录
if (!fs.existsSync(url)) {
url.split(path.sep).reduce((currentPath, folder) => {
currentPath += folder + path.sep;
if (!fs.existsSync(currentPath)) {
fs.mkdirSync(currentPath);
}
return currentPath;
}, "");
}
// 3、存入路径转换
const savepath = path.join(url, filename);
// 4、存入
await fs.writeFile(savepath, JSON.stringify(fileObj), "utf8", function (err) {
if (err) {
// console.error(err);
ctx.service.log.WriteLogs("info", servername, err);
return 0;
}
/*console.dir("写入成功!");*/
return 1;
})
2、文件读取
//0、内容
let obj={}
//1、读取
await readFileContent(savepath).then(res => {
obj= JSON.parse(res)
})
function readFileContent(filepath) {
return new Promise((resolve, reject) => {
fs.readFile(filepath, 'utf-8', (err, data) => {
if (err) {
//reject(console.log(err))
resolve({err:err})
} else {
resolve(data)
}
})
})
}
3、获取本地文件路径
async getPDFData() {
let dir = '../documents/pdf',
data = {
pdf: []
}
fs.readdirSync(dir).forEach((file) => {
var pathname = path.join(dir, file)
if (file == "pdf") {
fs.readdirSync(pathname).forEach((file2) => {
var pathname2 = path.join(pathname, file2)
data[file].push({name: file2, path: pathname2.replace("..", "")});
})
}
})
}