/

在 Node 中使用文件夾操作

在 Node 中使用文件夾操作

如何使用 Node 來操作文件夾

Node.js 的 fs 核心模組提供了很多方便的方法,可以用來處理文件夾。

驗證文件夾是否存在

使用 fs.access() 方法來檢查文件夾是否存在,並且 Node 是否有權限訪問。

創建新的文件夾

使用 fs.mkdir()fs.mkdirSync() 方法來創建新的文件夾。

1
2
3
4
5
6
7
8
9
10
11
const fs = require('fs')

const folderName = '/Users/flavio/test'

try {
if (!fs.existsSync(folderName)){
fs.mkdirSync(folderName)
}
} catch (err) {
console.error(err)
}

讀取文件夾內容

使用 fs.readdir()fs.readdirSync 方法來讀取文件夾內容。

以下程式碼示範了如何讀取文件夾內容,包括文件和子文件夾,並返回它們的相對路徑。

1
2
3
4
5
6
const fs = require('fs')
const path = require('path')

const folderPath = '/Users/flavio'

fs.readdirSync(folderPath)

你可以獲取完整的路徑:

1
2
3
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName)
}

你也可以過濾結果,只返回文件,排除文件夾:

1
2
3
4
5
6
7
const isFile = fileName => {
return fs.lstatSync(fileName).isFile()
}

fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName)
}).filter(isFile)

重命名文件夾

使用 fs.rename()fs.renameSync() 方法來重命名文件夾。第一個參數是當前路徑,第二個參數是新路徑。

1
2
3
4
5
6
7
8
9
const fs = require('fs')

fs.rename('/Users/flavio', '/Users/roger', err => {
if (err) {
console.error(err)
return
}
//成功完成
})

fs.renameSync() 是同步版本:

1
2
3
4
5
6
7
const fs = require('fs')

try {
fs.renameSync('/Users/flavio', '/Users/roger')
} catch (err) {
console.error(err)
}

刪除文件夾

使用 fs.rmdir()fs.rmdirSync() 方法來刪除文件夾。

刪除內容不為空的文件夾可能比較複雜。

在這種情況下,我建議安裝 fs-extra 模組,它非常受歡迎且得到了很好的維護,它是 fs 模組的完全兼容替代,提供了更多的功能。

使用以下命令來安裝它:

npm install fs-extra

然後像這樣使用:

1
2
3
4
5
6
7
const fs = require('fs-extra')

const folder = '/Users/flavio'

fs.remove(folder, err => {
console.error(err)
})

也可以使用 Promise:

1
2
3
4
5
fs.remove(folder).then(() => {
//成功完成
}).catch(err => {
console.error(err)
})

或者使用 async/await:

1
2
3
4
5
6
7
8
9
10
11
async function removeFolder(folder) {
try {
await fs.remove(folder)
//成功完成
} catch (err) {
console.error(err)
}
}

const folder = '/Users/flavio'
removeFolder(folder)

tags: [“Node.js”, “文件夾”, “fs模組”]