黑马node.js Day1(读取文件~获得扩展名)(全部笔记还在学。。)

//1.导入fs模块 操作文件
const fs = require('fs')//前面的fs随便叫什么都行是个常量

//2.调用fs.redFile()方法读取文件
// 参数1,读取文件的存放路径
// 参数2,读取文件时候采用的编码格式
// 参数3,回调函数,拿到读取失败err 或者读取成功 dataStr的结果
fs.readFile('./j1.txt', 'utf8', function (err, dataStr) {
    //2.1打印失败的结果
    //如果读取成功,err的值为null
    //如果读取失败,err的值变成错误对象 dataStr的值为undefined
    console.log(err)
    console.log('-----------')
    //2.1打印成功的结果  dataStr是文件内容
    console.log(dataStr)
})//注意这个括号 大括号的位置关系


// javascript
// fs.readFile(path[, options], callback)

// path:要读取的文件的路径。

// options:一个可选的对象,用于指定读取文件的选项。常用的选项包括编码格式(encoding),默认值为 null,以二进制形式返回原始缓冲区数据;或者可以指定编码格式,如 'utf8'。

// callback:回调函数,用于处理文件读取的结果。它接收两个参数:err 和 data。其中,err 是可能发生的错误对象,如果读取文件成功,则为 null;data 是读取到的文件内容。
//判断文件是否读取成功
const fs = require('fs')

fs.readFile('./1.txt', 'utf8', function (err, dataStr) {
    if (err) {//如果err为null就是读取成功
        return console.log('读取文件夹失败' + err.message)
    }

    console.log('读取文件成功!' + dataStr)

})







//1.导入fs模块 操作文件
const fs = require('fs')//前面的fs随便叫什么都行是个常量


//2.调用fs.writeFile()方法 写入文件的内容
// 参数1,表示文件存放路径
// 参数2,表示要写入的内容
// 参数3,utf8默认格式 此处没写(可选)
// 参数4,回调函数
fs.writeFile('./1.txt', 'abcd', function (err) {
    // console.log(err)

    if (err) {
        // 如果文件写入成功 err等于null
        // 如果文件写入失败 err等于一个错误对象
        return console.log('文件写入失败' + err);

    }
    console.log('文件写入成功!')
})
const fs = require('fs')

fs.readFile('./cj素材.txt', 'utf8', function (err, dataStr) {
    if (err) {
        return console.log('读取失败' + err.message)
    }
    console.log('读取成功' + dataStr)

    // 4.1先把成绩的数据 按照空格进行分割
    const arrOld = dataStr.split(' ')//里面穿了一个空格
    console.log(arrOld)//[ '小红=99', '小白=100', '小黄=70', '小黑=66', '小绿=88' ]


    // 4.2循环分割后的数组,对每一项数据 进行字符串的替换操作
    const arrNew = []
    arrOld.forEach(item => {
        arrNew.push(item.replace('=', ':'))

    })
    console.log(arrNew)//[ '小红:99', '小白:100', '小黄:70', '小黑:66', '小绿:88' ]

    // 4.3把新数组中的每一项 进行合并 得到一个新的字符串
    const newStr = arrNew.join('\r\n')//回车换行
    console.log(newStr)
    // 小红: 99
    // 小白: 100
    // 小黄: 70
    // 小黑: 66
    // 小绿: 88

    //调用 fs.writeFile方法 把处理完毕的成绩写入新文件中
    fs.writeFile('./ok.txt', newStr, function (err) {
        if (err) {
            return console.log('写入失败' + err.message)
        }
        console.log('写入成功')
    })

    fs.readFile('./ok.txt', 'utf8', function (err, dataStr) {

        if (err) {
            return console.log('读取失败' + err.message)
        }
        console.log('读取成功' + dataStr)
    })
})

// 先读取 读取后处理好 处理好后写入一个新文件中

//判断文件是否读取成功
const fs = require('fs')

// fs.readFile('./1.txt', 'utf8', function (err, dataStr) {
//     if (err) {//如果err为null就是读取成功
//         return console.log('读取文件夹失败' + err.message)
//     }

//     console.log('读取文件成功!' + dataStr)

// })
//如果该代码不是在NJS而是在上一级文件夹 则
// 读取失败 因为会在当前命令提示符的地址 动态拼接接下来灯地址
// ./   ../这种相对地址  执行因为的动态拼接 很容易失败


// 解决办法:绝对路径


// 绝对路径中需要使用\\    因为一个\代表转义 两个才代表地址的斜杠 
// fs.readFile('D:\\朱羽创建的D盘文件夹\\VScode\\VScodeline\\NJS\\1.txt', 'utf8', function (err, dataStr) {
//     if (err) {//如果err为null就是读取成功
//         return console.log('读取文件夹失败' + err.message)
//     }

//     console.log('读取文件成功!' + dataStr)

// })
// 移植性非常差 不方便维护


// 解决办法:
// __dirname 表示当前文件所处的目录
// 优点 不会根据命令提示符执行的当前地址 而受影响

// (相当于把绝对路径  的一大段变成了一个模块 叫双下划线dirname  再加上你要链接的文件就行)
console.log(__dirname)

fs.readFile(__dirname + '/1.txt', 'utf8', function (err, dataStr) {
    if (err) {//如果err为null就是读取成功
        return console.log('读取文件夹失败' + err.message)
    }

    console.log('读取文件成功!' + dataStr)

})

const path = require('path')
const fs = require('fs')

// path是用来处理路径的模块


// join可以拼接路径
// 注意../会抵消前一层路径
const pathStr1 = path.join('/a', '/b/c', '../', 'e')
console.log(pathStr1)//\a\b\e      c被抵消了


//对比
//fs.readFile(__dirname + '/j1.txt'                   )
// 一个加号  一个逗号   pathjoin在于  点点杠还是点杠不用写的很标准 不对的会自动变对
fs.readFile(path.join(__dirname, './j1.txt'), 'utf8', function (err, dataStr) {
    if (err) {//如果err为null就是读取成功
        return console.log('读取文件夹失败' + err.message)
    }

    console.log('读取文件成功!' + dataStr)

})


// path.basename()方法  将路径字符串中的 文件名解析出来


// 导入path
const path = require('path')

//先定义一个文件存放路径
const fpath = '/a/b/index.html'

// 定义变量名为完整名字   使其等于 basename方法得出的结果。
// 向basename中传参 fpath就是地址
const fullName = path.basename(fpath)
console.log(fullName)//index.html

///                   区别在于加了:       , '.html')
const nameWithoutExt = path.basename(fpath, '.html')
console.log(nameWithoutExt)//index  移除了扩展名部分




// 导入path
const path = require('path')

//先定义一个文件存放路径
const fpath = '/a/b/index.html'

const fext = path.extname(fpath)
console.log(fext)// .html  仅获取文件的扩展名部分



以上是 从黑马nodejs  读取文件到获取扩展名的代码和笔记,就是视频里的代码加点解释,案例最好自己敲,不然就是走马观花

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值