首頁  >  文章  >  web前端  >  一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

青灯夜游
青灯夜游轉載
2022-11-18 20:36:171661瀏覽

本篇文章透過讀寫檔案和處理路徑的案例,來一起學習下Node中的fs檔案模組和path路徑模組,希望對大家有幫助!

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

一、fs 檔案系統模組

fs 模組 是Node. js 官方提供的、用來操作檔 的模組。它提供了一系列的方法和屬性,用來滿足使用者對檔案的操作要求。 【相關教學推薦:nodejs影片教學

#1、讀取指定檔

fs. readFile():讀取指定檔案中的內容

參數1:必選參數,字串,表示檔案的路徑
參數2:可選參數,表示以什麼編碼格式來讀取檔案
參數3:必選參數,檔案讀取完成後,透過回呼函數拿到讀取的結果

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

##範例1:讀取demo.txt 檔案

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

demo.txt 檔案

'前端杂货铺'

app.js檔案

// 导入 fs 文件系统模块
const fs = require('fs')

// 读取文件 utf-8 为中文编码格式
fs.readFile('../files/demo.txt', 'utf-8', function (err, data) {
    console.log('err:', err)
    console.log('data:', data)
})

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

備註:若寫錯路徑,即檔案讀取失敗,列印內容如下【err為錯誤對象,data為undefined】

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

#範例2:判斷讀取demo.txt 檔案是否成功

# app.js 檔案

    故意寫錯路徑,讀取失敗
  • 失敗的結果如下
  • // 导入 fs 模块
    const fs = require('fs')
    
    // 读取文件
    fs.readFile('../files/demo1.txt', 'utf-8', function (err, data) {
        if(err) {
            return console.log('读取文件失败', err.message)
        }
        console.log('data:', data)
    })

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

2、寫入指定檔案

fs.writeFile():在指定的檔案中寫入內容

參數1:必選參數,需要指定一個檔案路徑的字串,表示檔案的存放路徑

參數2:必選參數,表示要寫入的內容
參數3:可選參數,表示以什麼格式寫入檔案內容,預設utf-8
參數4:必選參數,檔案寫入完成後的回呼函數

fs.writeFile(file, data, [options], callback)

範例1:寫入demo.txt 檔案

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

#demo.txt 檔案

// 该文件内容为空

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

## app.js 檔案

// 导入 fs 文件系统模块
const fs = require('fs')

// 写入文件内容
fs.writeFile('../files/demo.txt', '这里是前端杂货铺', function(err, data) {
    if (err) {
        return console.log('写入文件失败', err.message)
    }
    console.log('文件写入成功')
})

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)備註:若寫入不存在的磁碟中,即檔案寫入失敗,列印內容如下

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)
3、整理成績案例

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)範例:成績的格式轉換

#轉換前的成績格式

#轉換後的成績格式

  • 檔案格式如下
  • score.txt 檔案

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

寫入成績內容

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

杂货铺=100 张三=98 李四=95 王五=92

app.js 檔案#匯入所需的fs 檔案模組

使用fs.readFile() 方法,讀取素材目錄下的score.txt 檔案判斷檔案是否讀取失敗

檔案讀取成功後,處理成績資料

將處理完成的成績數據,呼叫fs.writeFile() 方法,寫入到新檔案newScore.txt 中一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

// 导入 fs 文件系统模块
const fs = require('fs')

// 写入文件内容
fs.readFile('../files/score.txt', 'utf-8', function (err, data) {
    // 判断是否读取成功
    if (err) {
        return console.log('读取文件失败' + err.message)
    }
    // 把成绩按空格进行分割
    const arrOld = data.split(' ')
    // 新数组的存放
    const arrNew = []
    // 循环分割后的数组 对每一项数据 进行字符串的替换操作
    arrOld.forEach(item => {
        arrNew.push(item.replace('=', ':'))
    })
    // 把新数组中的每一项合并 得到新的字符串
    const newStr = arrNew.join('\r\n')

    // 写入新数据
    fs.writeFile('../files/newScore.txt', newStr, function (err) {
        if (err) {
            return console.log('写入成绩失败' + err.message)
        }
        console.log('成绩写入成功')
    })
})
#################################################################################################################### ####4、處理路徑############__dirname:表示目前檔案所處的目錄#########範例:寫相對路徑####### #####
const fs = require('fs')

fs.readFile('../files/score.txt', 'utf-8', function(err, data) {
    if (err) {
        return console.log('文件读取失败' + err.message)
    }
    console.log('文件读取成功')
})

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

示例:使用 __dirname

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

const fs = require('fs')

// 读取文件
fs.readFile(__dirname + '/files/score.txt', 'utf-8', function(err, data) {
    if (err) {
        return console.log('文件读取失败' + err.message)
    }
    console.log('文件读取成功')
})

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

二、path 路径模块

path 模块是 Node.js 官方提供的、用来处理路径的模块

1、path.join() 路径拼接

path.join():用来将多个路径判断拼接成一个完整的路径字符串

参数:…paths <string></string> 路径片段的序列
返回值:返回值 <string></string>

path.join([...paths])

示例:路径拼接

// 导入 path 模块
const path = require(&#39;path&#39;)
// ../ 会抵消前面的路径
const pathStr = path.join(&#39;/a&#39;,&#39;/b/c&#39;, &#39;../&#39;, &#39;./d&#39;, &#39;e&#39;)
console.log(pathStr)

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)
备注:涉及到路径拼接的操作,都要使用 path.join() 方法进行处理。不要直接用 + 进行字符串拼接

示例:使用 path 进行路径拼接

const fs = require(&#39;fs&#39;)
const path = require(&#39;path&#39;)

// 文件读取
fs.readFile(path.join(__dirname, &#39;/files/score.txt&#39;), &#39;utf-8&#39;, function(err, data) {
    if (err) {
        return console.log(&#39;文件读取失败&#39;, err.message)
    }
    console.log(&#39;文件读取成功&#39;)
})

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

2、path.basename() 解析文件名

path.basename():用来从路径字符串中,将文件名解析出来

参数 1:path 必选参数,表示一个路径的字符串
参数 2:ext 可选参数,表达文件扩展名
返回值:返回 表示路径中的最后一部分

path.basename(path, [ext])

示例:解析路径,去除扩展名

// 导入 path 模块
const path = require(&#39;path&#39;)
// 文件的存放路径
const fpath = &#39;/a/b/c/index.html&#39;

// 将文件名解析出来
const fullName = path.basename(fpath)
console.log(fullName) // 输出 index.html

// 去除扩展名
const nameWithoutExt = path.basename(fpath, &#39;.html&#39;)

console.log(nameWithoutExt) // 输出 index

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

3、path.extname() 获取扩展名

path.extname():可以获取路径中的扩展名部分

参数:path <string></string> 必选参数,表示一个路径的字符串
返回值:返回 <string></string> 返回得到的扩展名字符串

path.extname(path)

示例:获取扩展名

// 导入 path 模块
const path = require('path')
// 文件的存放路径
const fpath = '/a/b/c/index.html'
// 获取扩展名
const fext = path.extname(fpath)

console.log(fext) // .html

一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)

更多node相关知识,请访问:nodejs 教程

以上是一文聊聊Node中的fs檔案模組和path路徑模組(案例分析)的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:csdn.net。如有侵權,請聯絡admin@php.cn刪除