首頁 >web前端 >js教程 >快速了解nodejs專案中如何增刪改查文件

快速了解nodejs專案中如何增刪改查文件

青灯夜游
青灯夜游轉載
2021-09-01 18:22:031588瀏覽

快速了解nodejs專案中如何增刪改查文件

這篇文章主要是寫給初學node.js的同學,這篇文章主要姐介紹nodejs的檔案模組,透過nodejs的檔案模組,我們可以建立、讀取、修改、刪除我們作業系統上的檔案或資料夾,同理在Linux伺服器上也是可以運作的。因為nodejs是跨平台運行的javascript運行環境。 【推薦學習:《nodejs 教學》】

Nodejs File System官方文件:https://nodejs.org/dist/latest-v14.x/docs/api/fs.html

原始碼:https://github.com/cmdfas/nodejs-file-system

專案結構:

├── files
│   ├── file1
│   └── file2
├── dir.js
├── index-callback.js
├── index-promise.js
└── stream.js

常規檔案操作

回呼函數式操作

建立index-callback.js,程式碼如下

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

// 读取文件
fs.readFile(path.join(__dirname, 'files', 'file1'), (err, buf) => {
    if (err) throw err
    console.log(buf.toString()) 
})

// 写入文件
fs.writeFile(path.join(__dirname, 'files', 'file3'), '欢迎光临', (err) => {
    if (err) throw err
    console.log('写入完成') 

  	// 在文件末尾追加
    fs.appendFile(path.join(__dirname, 'files', 'file3'), '\n\n男宾三位', (err) => {
        if (err) throw err
        console.log('追加完成') 

      	// 修改文件名称
        fs.rename(path.join(__dirname, 'files', 'file3'), path.join(__dirname, 'files', 'file3-rename'), (err) => {
            if (err) throw err
            console.log('改名完成') 
    
        })
    })
})

總結:

  • ##readFile用來讀取檔案的內容,在讀取成功後在回調函數傳回的是buffer格式,所以需要呼叫toString()方法
  • writeFile寫入內容進文件,如果檔案不存在會自動建立檔案
  • appendFile在檔案末端追加內容,如果檔案不存在會自動建立檔案
  • rename可以用來修改檔案名稱
  • path.join用來拼接檔案路徑,可以避免不同作業系統路徑格式不同的問題
  • __dirname是node.js全域變量,預設是目前專案目錄
promise async await式運算

建立

index-promise.js,程式碼如下

const fsPromises = require('fs').promises
const path = require('path')

const fileFunc = async () => {
    try {
        const data = await fsPromises.readFile(path.join(__dirname, 'files', 'file1'))
        console.log(data.toString())
        await fsPromises.unlink(path.join(__dirname, 'files', 'file1'))
      
        await fsPromises.writeFile(path.join(__dirname, 'files', 'file5'), data)
        await fsPromises.appendFile(path.join(__dirname, 'files', 'file5'), '\n\n欢迎光临')
        await fsPromises.rename(path.join(__dirname, 'files', 'file5'), path.join(__dirname, 'files', 'file5-rename'))
        const newData = await fsPromises.readFile(path.join(__dirname, 'files', 'file5-rename'))
        console.log(newData.toString())
    } catch (error) {
        console.log(error)
    }
}

fileFunc()

總結:

    比較比起回呼操作,使用async await操作會更優雅,不會出現回呼地獄
  • unlink用來刪除檔案
檔案流操作

建立

stream.js,程式碼如下

#方式一

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

// 监听读取并写入
rs.on('data', (chunk) => {
	ws.write(chunk)
})

在讀取大檔案時或處理網絡檔案時,檔案流操作很有用,在操作大檔案時,我們可以設定每次讀取的資料量大小,預設是64kb

方式二

const fs = require('fs')

// 读取文件流
const rs = fs.createReadStream('./files/file2', { encoding: 'utf8' })
// 写入文件流
const ws = fs.createWriteStream('./files/new-file2')

rs.pipe(ws)

pipe方法會自動將讀取檔案流匯入到寫入流,相當於一個方便操作。

操作資料夾

建立

dir.js,程式碼如下

const fs = require('fs')

// 判断文件夹是否存在
if (!fs.existsSync('./new')) {
  	// 创建文件夹
    fs.mkdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹创建成功')
    })
}

if (fs.existsSync('./new')) {
  	// 删除文件夹
    fs.rmdir('./new', (err) => {
        if (err) throw err
        console.log('文件夹删除成功')
    })
}

總結:

    ##existsSync
  • 是同步方法,用來判斷資料夾是否存在
  • mkdir
  • 建立資料夾
  • rmdir
  • 刪除資料夾
  • 這3個操作資料夾的方法非常常用,就像每天吃飯一樣。

更多程式相關知識,請造訪:

程式設計入門

! !

以上是快速了解nodejs專案中如何增刪改查文件的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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