Node.js fs()与path()

7 篇文章 0 订阅
6 篇文章 0 订阅

  • 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)
    
})






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值