NodeJs读取文件夹下所有文件,创建文件,写入(输出文件,输出到指定文件夹)一文搞定
const fsp = require("fs"); //文件模块
const path = require("path"); //路径模块
const os = require("os"); //操作系统模块
const processFile = () => {
// 返回当前用户的主目录的字符串路径
const homedir = os.homedir();
// 根据当前用户的主目录的字符串路径,拼接要读取的文件夹
const dataFileUrl = path.join(homedir, "Desktop", "666", "/");
// 判断文件路径是否存在,不存在就是没有这个文件夹
const fileUrlBlo = fsp.existsSync(path.join(homedir, "Desktop", "666"));
try {
if (fileUrlBlo) {
// 如果存在文件夹,读取文件夹下所有的文件
const file = fsp.readdirSync(dataFileUrl);
// file是个数组,是所有文件的名字
file.forEach((item) => {
// 拼接文件路径, 完整路径例( C:/Users/用户名/Desktop/666/说明.txt)
const fullPath = path.join(dataFileUrl, item);
// 获取文件信息
const stat = fsp.statSync(fullPath);
// 判断是否有子文件夹
if (stat.isDirectory()) {
console.log(`文件夹: ${fullPath}`);
// 这里可以递归遍历子目录
} else {
// 这里可以去除我们创建的文件
// if (fullPath.includes("说明.txt")) {
// return false;
// }
// 然后就可以开始读取文件了
const fileData = fsp.readFileSync(fullPath, "utf8");
// fileData 就是读取出来的数据,json格式使用前需要转换JSON.parse(fileData);
// 一些处理数据的逻辑
//处理完之后就可以输出文件了,这里要注意,999存放输出文件的文件夹,需要提前创建,或者利用程序创建,具体创建方法看else代码块
fsp.writeFileSync(
path.join(homedir, "Desktop", "999", "/") + `输出文件.txt`,
"输出内容......."
);
}
});
} else {
/**
* 没有文件夹则创建(注:如果是多个文件夹,最好判断一下,哪个没有就创建哪个)
*
*/
if ( !fileUrlBlo ) {
// 创建文件夹---
//homedir 就是当前用户的主目录 Desktop 就是桌面 666是文件名
//注意路径,只能用 path.join 这种格式拼接,可能还有其他方法,这个可以自行研究,创建完文件夹就可以写入文件了。
fsp.mkdirSync(path.join(homedir, "Desktop", "666"));
// 写入文件,这里的路径要拼接成刚才创建的文件夹。 例: C:/Users/用户名/Desktop/666/说明.txt
// 我们这里直接用上面创建好的 dataFileUrl 变量,第二个参数是文件的内容
fsp.writeFileSync(dataFileUrl + `说明.txt`, "写入的文件");
}
// 例:多个
// if (!fileUrlBlo) {
// 创建
// }
// if (!fileUrlBlo2) {
// 创建
// }
// if (!fileUrlBlo3) {
// 创建
// }
}
} catch (err) {
console.error(err);
}
};
processFile();
运行后,就可以看到桌面会多出一个 666 的文件夹,点开文件夹里面会有我们创建的文件以及内容,输出文件需要在桌面创建 999 文件夹,然后再次运行就会看到我们输出的文件以及内容。
如果需要指定输出的文件夹,就把输出路径换一下就好了
// Desktop 换成你想要输出的地方,999 换成你要输出的文件夹名
fsp.writeFileSync(
path.join(homedir, "Desktop", "999", "/") + `输出文件.txt`,
"输出内容......."
);