-
fs
1 读取文件
const fs=require('fs')
fs.readfile('','utf8',function(err,dataStr){
console.log(err)
console.log('===============')
console.log(dataStr)
})
// 1 导入fs模块 来操作文件
let fs = require('fs')
// 2 读取文件
// 参数一:读取的文件路径
// 参数二:读取文件的编码格式
// 参数三:回调函数:err 读取失败,dataStr 读取成功
fs.readFile('./files/abc.txt', 'utf-8', function (err, dataStr) {
// 打印失败的结果 如果成功,则为null
console.log(err);
console.log("====================");
// 打印成功的结果
console.log(dataStr);
})
2 写入文件
const fs = require("fs");
fs.readFile("./files/成绩.txt", "utf-8", function (err, dataStr) {
if (err) {
console.log("文件读取失败" + err.message);
}
console.log(dataStr);
// 成绩处理
// 1 把成绩数据按照空格进行分割
// split() 方法使用指定的分隔符字符串将一个String对象分割成子字符串数组,以一个指定的分割字串来决定每个拆分的位置。
let arrOld = dataStr.split(" ");
console.log(arrOld);
// 2 循环分割后的数组,对每一项进行替换操作
let arrNew = [];
arrOld.forEach((item) => {
// replace() 方法返回一个由替换值(replacement)替换部分或所有的模式(pattern)匹配项后的新数组,原数组不会改变。
arrNew.push(item.replace("=", ":"));
});
console.log(arrNew);
// 3 把数组中的每一项重新拼接,形成一个新字符串
// \r:回车
// \n:换行
let newStr = arrNew.join("\r\n");
console.log(typeof newStr);
console.log(newStr);
// 写入新的文件
fs.writeFile('./files/成绩整理.txt', newStr, function (err) {
if (err) {
return console.log('文件写入失败')
}
console.log('文件写入成功')
})
});
3 文件目录动态拼接
// 1 导入fs模块 来操作文件
let fs = require('fs')
// 2 读取文件
// 参数一:读取的文件路径
// 参数二:读取文件的编码格式
// 参数三:回调函数:err 读取失败,dataStr 读取成功
// __dirname:表示当前文件所处的目录
fs.readFile(__dirname+'/files/abc.txt', 'utf-8', function (err, result) {
// 打印失败的结果 如果成功,则为null
// console.log(err);
if(err){
return console.log('读取文件失败!'+err.message);
}
// console.log("====================");
// 打印成功的结果
console.log('文件读取成功,内容是:'+ result );
})
-
path
const path = require('path')
const fs=require('fs')
// path.join() 将多个路径片段拼接成一个完整的路径字符串
// 注意:../会抵消前面一层的路径
let path1 = path.join('/a','/b/c','../','./d','/e')
console.log(path1)
// 使用path.join()拼接路径,读取文件
fs.readFile(path.join(__dirname, './files/你好.txt'),function (err, dataStr) {
if (err) {
return console.log('文件读取错误'+err);
}
console.log('文件读取成功'+dataStr);
})
const path = require('path')
const fs=require('fs')
// 注意路径字符串里的是"/",不是"\",否则会出错
let path1 = 'D:/Program/workspace/first-project/06 Node.js 练习/files/成绩整理.txt'
let str1 = path.extname(path1)
// let str2 = path.basename(path1,'.txt')
console.log(str1);
时钟案例
// 导入fs模块
const fs = require('fs')
// 导入path模块
const path = require('path')
let path1 = path.join(__dirname, '/01 时钟案例/index.html')
console.log(path1)
// 1 创建两个正则表达式,来匹配<stytle></stytle> 和<script></script>
// \s表示空白字符,\S表示非空白字符,*表示匹配任意次
let regStyle = /<style>[\s\S]*<\/style>/
let regScript = /<script>[\s\S]*<\/script>/
console.log(regStyle);
console.log(regScript);
// 2读取index.html文件
fs.readFile(path1,'utf-8', function (err, dataStr) {
if(err){
return console.log('读取文件错误'+err.message)
}
console.log(dataStr)
// 3创建resolveCss(dataStr)方法
function resolveCss(dataStr) {
// 利用正则表达式的exec()方法提取style标签
let r1 = regStyle.exec(dataStr)
// r1 的数据类型为对象object
console.log(typeof r1);
console.log(r1);
// 提取r1中的内容,删除<style></style>
let newCSS = r1[0].replace('<style>','').replace('</style>','')
console.log(newCSS);
// 写入css文件
fs.writeFile(path.join(__dirname,'/01 时钟案例/index.css'),newCSS, function (err) {
if (err) {
return console.log('写入CSS文件失败!+err.message')
}
console.log('写入CSS文件成功!')
})
}
// 调用resolveCss(dataStr)方法
resolveCss(dataStr)
// 4创建resolveJs(dataStr)方法
function resolveJs(dataStr) {
// 利用正则表达式的exec()方法提取script标签
let r1 = regScript.exec(dataStr)
// r1 的数据类型为对象object
console.log(typeof r1);
console.log(r1);
// 提取r1中的内容,删除<script></script>
let newJS = r1[0].replace('<script>', '').replace('</script>', '')
console.log(newJS);
// 写入css文件
fs.writeFile(path.join(__dirname,'/01 时钟案例/index.js'),newJS, function (err) {
if (err) {
return console.log('写入JS文件失败!+err.message')
}
console.log('写入JS文件成功!')
})
}
// 调用resolveJs(dataStr)方法
resolveJs(dataStr)
// 5创建resolveHtml(dataStr)方法
function resolveHtml(dataStr) {
// 利用正则表达式的exec()方法提取script标签
let r1 = regScript.exec(dataStr)
// r1 的数据类型为对象object
console.log(typeof r1);
console.log(r1);
// 利用正则表达式的exec()方法提取style标签
let r2 = regStyle.exec(dataStr)
// r1 的数据类型为对象object
console.log(typeof r2);
console.log(r2);
// 从dataStr中,删除<style></style>,<script></script>
let newHTML = dataStr.replace(r1, '<link rel="stylesheet" href="./index.css">').replace(r2, ' <script src="./index.js"></script>')
console.log(newHTML);
// 写入index1.html文件
fs.writeFile(path.join(__dirname,'/01 时钟案例/index1.html'),newHTML, function (err) {
if (err) {
return console.log('写入JS文件失败!+err.message')
}
console.log('写入HTML文件成功!')
})
}
// 调用resolveHtml(dataStr)方法
resolveHtml(dataStr)
})