欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

總結(jié)Node.js中9種fs模塊文件操作方法(文件夾遞歸刪除知識(shí))

 更新時(shí)間:2022年07月21日 14:51:31   作者:@魏大大  
這篇文章主要介紹了總結(jié)Node.js中9種fs模塊文件操作方法(文件夾遞歸刪除知識(shí)),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下

本文主要介紹了Node.js常用的文件操作方法,以及常見的處理場景,文件追加,文件夾遞歸刪除等。

一、前言

  • fs.mkdir()
  • fs.writeFile()
  • fs.appendFile()
  • fs.stat()fs.readFile()
  • fs.readdir()
  • fs.rename()
  • fs.unlink()
  • fs.rmdir()

二、fs.mkdir()創(chuàng)建文件夾

異步的創(chuàng)建一個(gè)文件夾:

語法:

fs.mkdir(path[,options],callback)
/**
 * path <string> | <Buffer> | <URL>
 * options <Object> | <integer>
 * recursive <boolean> 默認(rèn)值: false
 * mode <string> | <integer> Windows 上不支持。 默認(rèn)值: 0o777。
 * callback <Function>
 * err <Error>
 * path <string> | <undefined> 僅當(dāng)創(chuàng)建目錄時(shí)將 recursive 設(shè)置為 true。
 */

2.1 最簡單的案例

最簡單的案例,在當(dāng)前目錄下創(chuàng)建一個(gè)temp文件夾:

const fs = require('fs')

fs.mkdir('./temp',(err)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log('創(chuàng)建文件夾成功')
})

代碼執(zhí)行結(jié)果:

2.2 遞歸創(chuàng)建文件夾

使用參數(shù){recursive:true}創(chuàng)建多層次的文件夾。

fs.mkdir('./parent/son/grandson',{recursive:true},(err,path)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log('遞歸創(chuàng)建文件夾成功',path)
})

代碼執(zhí)行結(jié)果:

注意: 在使用{recursive:true}參數(shù)時(shí),回調(diào)對(duì)應(yīng)的會(huì)增加一個(gè)path參數(shù),其他情況下沒有。

三、fs.wirteFile()創(chuàng)建、寫文件

當(dāng) file 是文件名時(shí),將數(shù)據(jù)異步地寫入文件,如果文件已存在則替換該文件。 data 可以是字符串或緩沖區(qū)。

當(dāng) file 是文件描述符時(shí),其行為類似于直接調(diào)用 fs.write()本文不涉及這種情況)。

語法:

fs.writeFile(file, data[, options], callback)
/**
 * file <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符
 * data <string> | <Buffer> | <TypedArray> | <DataView> | <Object>
 * options <Object> | <string>
 * encoding <string> | <null> 默認(rèn)值: 'utf8'
 * mode <integer> 默認(rèn)值: 0o666
 * flag <string> 請(qǐng)參閱對(duì)文件系統(tǒng) flags 的支持。 默認(rèn)值: 'w'。
 * signal <AbortSignal> 允許中止正在進(jìn)行的寫入文件
 * callback <Function>
 * err <Error> | <AggregateError>
 */

3.1 創(chuàng)建并寫入一個(gè)文件

創(chuàng)建一個(gè)名為index.html的文件,并寫入一行字符串。

fs.writeFile('./index.html',"<h1>你好,中國</h1>",(err)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log("創(chuàng)建寫入文件成功")
})

代碼執(zhí)行結(jié)果如下:

3.2 重寫文件并指定編碼

重寫index.html,并為文件指定編碼:

fs.writeFile('./index.html','<h2>面朝大海,春暖花開</h2>','utf-8',(err)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log('寫入指定格式文件成功')
})

代碼執(zhí)行效果如下:

原文件內(nèi)容被覆蓋。

3.3 寫入GBK格式的文件

Node.js僅支持utf8 ucs2 ascii binary base64 hex這幾種格式,對(duì)于GBK,GB2312等特殊格式需要使用額外的庫(這里使用iconv-lite)。

案例:

const iconv = require('iconv-lite')
fs.writeFile('./style.css',iconv.encode('面朝大海,春暖花開','gbk'),(err)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log("以GBK格式寫入成功")
})

代碼執(zhí)行結(jié)果:

注意底部的編碼格式,如果使用utf-8打開文件會(huì)亂碼的呦!

四、fs.appendFile()文件后追加內(nèi)容

異步地將數(shù)據(jù)追加到文件,如果該文件尚不存在,則創(chuàng)建該文件。

語法:

fs.appendFile(path, data[, options], callback)
/**
 * path <string> | <Buffer> | <URL> | <number> 文件名或文件描述符
 * data <string> | <Buffer>
 * options <Object> | <string>
 * encoding <string> | <null> 默認(rèn)值: 'utf8'
 * mode <integer> 默認(rèn)值: 0o666
 * flag <string> 請(qǐng)參閱對(duì)文件系統(tǒng) flags 的支持。 默認(rèn)值: 'a'。
 * callback <Function>
 * err <Error>
 */

4.1 使用追加的方式創(chuàng)建并寫入內(nèi)容

fs.appendFile('./test.txt', '測(cè)試寫入', (err) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log("使用追加的方式創(chuàng)建并寫入文件")
})

代碼執(zhí)行結(jié)果:

4.2 追加內(nèi)容

fs.appendFile('./test.txt', "\n追加測(cè)試", (err) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log('在已經(jīng)存在的文件中追加內(nèi)容')
})

代碼執(zhí)行結(jié)果:

五、fs.stat()判斷路徑是目錄還是文件

判斷路徑是文件還是目錄。

語法:

 fs.stat(path[, options], callback)
/**
 * path <string> | <Buffer> | <URL>
 * options <Object>
 * bigint <boolean> 返回的 <fs.Stats> 對(duì)象中的數(shù)值是否應(yīng)為 bigint。 默認(rèn)值: false。
 * callback <Function>
 * err <Error>
 * stats <fs.Stats>
 */

5.1 判斷文件案例

判斷index.html是文件還是目錄。

fs.stat('./index.html',(err,stats)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log(`./index.html是文件:${stats.isFile()}`)
    console.log(`./index.html是目錄:${stats.isDirectory()}`)
})

代碼執(zhí)行效果:

六、fs.readFile()讀取文件內(nèi)容

異步地讀取文件的全部內(nèi)容。

語法:

fs.stat('./index.html',(err,stats)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log(`./index.html是文件:${stats.isFile()}`)
    console.log(`./index.html是目錄:${stats.isDirectory()}`)
})

6.1 以默認(rèn)格式讀取文件

以默認(rèn)的格式(utf-8)讀取文件內(nèi)容:

fs.readFile('./index.html',(err,data)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log(`讀取文件成功,文件內(nèi)容是:\n${data}`)
})

代碼執(zhí)行結(jié)果:

如果要讀取的文件不是utf-8格式,就會(huì)出現(xiàn)亂碼,這時(shí)就需要指定讀取格式。

6.2 以指定格式(這里是GBK)讀取文件

遺憾的是,node.js不支持除了utf8 ucs2 ascii binary base64 hex之外的編碼,我們需要使用額外的包(iconv-lite)讀取GBK文件:

const iconv = require('iconv-lite')
fs.readFile('./index.html',(err,data)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log(`讀取文件成功,文件內(nèi)容是:\n${data}`)
    console.log("讀取文件成功,文件內(nèi)容是:\n",iconv.decode(data,'gbk'))
})

代碼執(zhí)行結(jié)果如下:

七、fs.readdir()讀取文件夾中的內(nèi)容

讀取目錄的內(nèi)容。 回調(diào)有兩個(gè)參數(shù) (err, files),其中 files 是目錄中文件名的數(shù)組,不包括 '.''..'。

語法:

fs.readdir(path[, options], callback)
/**
 * path <string> | <Buffer> | <URL>
 * options <string> | <Object>
 * encoding <string> 默認(rèn)值: 'utf8'
 * withFileTypes <boolean> 默認(rèn)值: false
 * callback <Function>
 * err <Error>
 * files <string[]> | <Buffer[]> | <fs.Dirent[]>
 */

7.1 讀取文件夾案例

讀取當(dāng)前文件夾下所有的文件。

fs.readdir('./',(err,files)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log(files)
})

代碼執(zhí)行結(jié)果:

PS D:\Code\Study\Node\demos> node .\01-fs.js
[
  '01-fs.js',
  'index.html',       
  'node_modules',     
  'package-lock.json',
  'package.json',     
  'style.css',
  'temp'
]

7.2 獲取文件類型

我們可以在讀取文件列表的時(shí)候,獲取文件的類型。

fs.readdir('./',{withFileTypes:true},(err,files)=>{
    if(err){
        console.log(err.message)
        return 
    }
    console.log(files)
})

代碼執(zhí)行結(jié)果:

PS D:\Code\Study\Node\demos> node .\01-fs.js
[
  Dirent { name: '01-fs.js', [Symbol(type)]: 1 },
  Dirent { name: 'index.html', [Symbol(type)]: 1 },
  Dirent { name: 'node_modules', [Symbol(type)]: 2 },
  Dirent { name: 'package-lock.json', [Symbol(type)]: 1 },
  Dirent { name: 'package.json', [Symbol(type)]: 1 },
  Dirent { name: 'style.css', [Symbol(type)]: 1 },
  Dirent { name: 'temp', [Symbol(type)]: 2 }
]

八、fs.raname()重命名、移動(dòng)文件

oldPath 處的文件異步重命名為作為 newPath 提供的路徑名。 如果 newPath 已經(jīng)存在,則它將被覆蓋。 如果在 newPath 中有目錄,則會(huì)引發(fā)錯(cuò)誤。 除了可能的異常之外,沒有為完成回調(diào)提供任何參數(shù)。

fs.rename(oldPath, newPath, callback)
/**
 * oldPath <string> | <Buffer> | <URL>
 * newPath <string> | <Buffer> | <URL>
 * callback <Function>
 * err <Error>
 */

8.1 重命名文件

index.html重命名為main.html

fs.rename('./index.html', './main.html', (err) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log('重命名成功')
})

代碼執(zhí)行結(jié)果:

PS E:\Code\Node\demos> node .\01-fs.js
重命名成功
PS E:\Code\Node\demos> ls

目錄: E:\Code\Node\demos


Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2022/7/4     18:43                node_modules
da----          2022/7/4     17:33                temp
-a----          2022/7/4     19:48           6210 01-fs.js
-a----          2022/7/4     16:23             27 main.html         (*)
-a----          2022/7/4     16:58           1455 package-lock.json
-a----          2022/7/4     16:57             55 package.json
-a----          2022/7/4     17:05             18 style.css
-a----          2022/7/4     19:40             12 test.txt

8.2 移動(dòng)文件

./main.html移動(dòng)到./temp/main.html。

fs.rename('./main.html', './temp/main.html', (err) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log('移動(dòng)文件成功')
})

代碼執(zhí)行結(jié)果:

PS E:\Code\Node\demos> node .\01-fs.js
移動(dòng)文件成功
PS E:\Code\Node\demos> ls .\temp\     

目錄: E:\Code\Node\demos\temp

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          2022/7/4     16:23             27 main.html

PS E:\Code\Node\demos>

九、fs.unlink()刪除文件

異步地刪除文件或符號(hào)鏈接。 除了可能的異常之外,沒有為完成回調(diào)提供任何參數(shù)。

9.1 刪除文件案例

fs.unlink('./temp/main.html', (err) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log("刪除文件成功")
})

代碼執(zhí)行結(jié)果:

PS E:\Code\Node\demos> ls .\temp\

目錄: E:\Code\Node\demos\temp

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
-a----          2022/7/4     20:03              0 main.html

PS E:\Code\Node\demos> node .\01-fs.js
刪除文件成功
PS E:\Code\Node\demos> ls .\temp\
PS E:\Code\Node\demos> 

十、fs.rmdir()刪除文件夾

刪除指定路徑的文件夾。

語法:

fs.rmdir(path[, options], callback)
/**
 * path <string> | <Buffer> | <URL>
 * options <Object>
 * maxRetries <integer> 如果遇到 EBUSY、EMFILE、ENFILE、ENOTEMPTY 或 EPERM 錯(cuò)誤,
 *           Node.js 將在每次嘗試時(shí)以 retryDelay 毫秒的線性退避等待時(shí)間重試該操作。 
 *           此選項(xiàng)表示重試次數(shù)。 如果 recursive 選項(xiàng)不為 true,則忽略此選項(xiàng)。 默認(rèn)值: 0。
 * recursive <boolean> 如果為 true,則執(zhí)行遞歸目錄刪除。 在遞歸模式下,操作將在失敗時(shí)重試。 默認(rèn)值: false。 已棄用。
 * retryDelay <integer> 重試之間等待的時(shí)間(以毫秒為單位)。 如果 recursive 選項(xiàng)不為 true,則忽略此選項(xiàng)。 默認(rèn)值: 100。
 * callback <Function>
 * err <Error>
 */

10.1 刪除空的文件夾

刪除./temp文件夾。

fs.rmdir('./temp', (err) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log('刪除空的文件夾')
})

代碼執(zhí)行結(jié)果:

PS E:\Code\Node\demos> ls .      

目錄: E:\Code\Node\demos

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2022/7/4     18:43                node_modules
da----          2022/7/4     20:03                temp
-a----          2022/7/4     20:09           7666 01-fs.js
-a----          2022/7/4     16:58           1455 package-lock.json
-a----          2022/7/4     16:57             55 package.json
-a----          2022/7/4     17:05             18 style.css
-a----          2022/7/4     19:40             12 test.txt

PS E:\Code\Node\demos> node .\01-fs.js
刪除空的文件夾
PS E:\Code\Node\demos> ls

目錄: E:\Code\Node\demos

Mode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----          2022/7/4     18:43                node_modules
-a----          2022/7/4     20:09           7666 01-fs.js
-a----          2022/7/4     16:58           1455 package-lock.json
-a----          2022/7/4     16:57             55 package.json
-a----          2022/7/4     17:05             18 style.css
-a----          2022/7/4     19:40             12 test.txt

10.2 刪除非空的文件夾

這里使用的是同步的文件處理函數(shù),用于遞歸的刪除文件夾。

function emptyDir(path) {
    const files = fs.readdirSync(path); //同步讀取文件夾
    files.forEach(file => {             //刪除文件夾中的所有文件/夾
        const filePath = `${path}/${file}`;
        const stats = fs.statSync(filePath);
        if (stats.isDirectory()) {
            emptyDir(filePath);
        } else {
            fs.unlinkSync(filePath);
            console.log(`刪除${file}文件成功`);
        }
    });
    fs.rmdirSync(path)                  //刪除文件夾
}
emptyDir('./node_modules')

代碼執(zhí)行結(jié)果:

PS E:\Code\Node\demos> node .\01-fs.js
刪除.package-lock.json文件成功
刪除dependabot.yml文件成功
刪除codeStyleConfig.xml文件成功
刪除Project.xml文件成功
刪除iconv-lite.iml文件成功
... ...

十一、總結(jié)

本文總結(jié)了Node.js常用的文件操作方法,以及常見的文件處理場景。

主要包括:

  • fs.mkdir()
  • fs.writeFile()
  • fs.appendFile()
  • fs.stat()fs.readFile()
  • fs.readdir()
  • fs.rename()
  • fs.unlink()
  • fs.rmdir()

十二、本文源碼

/**
 * fs.mkdir(path[,options],callback)
 * path <string> | <Buffer> | <URL>
 * options <Object> | <integer>
 * recursive <boolean> 默認(rèn)值: false
 * mode <string> | <integer> Windows 上不支持。 默認(rèn)值: 0o777。
 * callback <Function>
 * err <Error>
 * path <string> | <undefined> 僅當(dāng)創(chuàng)建目錄時(shí)將 recursive 設(shè)置為 true。
 */
const fs = require('fs')

// 1. 最簡單的測(cè)試案例
// fs.mkdir('./temp',(err)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log('創(chuàng)建文件夾成功')
// })

// 2. 遞歸創(chuàng)建文件夾
// fs.mkdir('./parent/son/grandson',{recursive:true},(err,path)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log('遞歸創(chuàng)建文件夾成功',path)
// })

/**-------------------------------------------------------------------------------------- */
/**-------------------------------------------------------------------------------------- */
/**-------------------------------------------------------------------------------------- */
/**
 * fs.writeFile(file, data[, options], callback)
 * file <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符
 * data <string> | <Buffer> | <TypedArray> | <DataView> | <Object>
 * options <Object> | <string>
 * encoding <string> | <null> 默認(rèn)值: 'utf8'
 * mode <integer> 默認(rèn)值: 0o666
 * flag <string> 請(qǐng)參閱對(duì)文件系統(tǒng) flags 的支持。 默認(rèn)值: 'w'。
 * signal <AbortSignal> 允許中止正在進(jìn)行的寫入文件
 * callback <Function>
 * err <Error> | <AggregateError>
 */

// 1. 創(chuàng)建并寫入一個(gè)文件
// fs.writeFile('./index.html',"<h1>你好,中國</h1>",(err)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log("創(chuàng)建寫入文件成功")
// })

// 2. 指定文件格式
// fs.writeFile('./index.html','<h2>面朝大海,春暖花開</h2>','utf-8',(err)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log('寫入指定格式文件成功')
// })

// 3. 寫gbk文件
// const iconv = require('iconv-lite')
// fs.writeFile('./style.css',iconv.encode('面朝大海,春暖花開','gbk'),(err)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log("以GBK格式寫入成功")
// })
/**
 * fs.appendFile(path, data[, options], callback)
 * path <string> | <Buffer> | <URL> | <number> 文件名或文件描述符
 * data <string> | <Buffer>
 * options <Object> | <string>
 * encoding <string> | <null> 默認(rèn)值: 'utf8'
 * mode <integer> 默認(rèn)值: 0o666
 * flag <string> 請(qǐng)參閱對(duì)文件系統(tǒng) flags 的支持。 默認(rèn)值: 'a'。
 * callback <Function>
 * err <Error>
 */
// 1. 創(chuàng)建文件并寫入內(nèi)容
// fs.appendFile('./test.txt', '測(cè)試寫入', (err) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log("使用追加的方式創(chuàng)建并寫入文件")
// })

// 2. 追加內(nèi)容
// fs.appendFile('./test.txt', "\n追加測(cè)試", (err) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log('在已經(jīng)存在的文件中追加內(nèi)容')
// })
/** =============================================================================== */
/**
 * fs.stat(path[, options], callback)
 * path <string> | <Buffer> | <URL>
 * options <Object>
 * bigint <boolean> 返回的 <fs.Stats> 對(duì)象中的數(shù)值是否應(yīng)為 bigint。 默認(rèn)值: false。
 * callback <Function>
 * err <Error>
 * stats <fs.Stats>
 */
// 1. 判斷路徑是目錄還是文件
// fs.stat('./index.html',(err,stats)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log(`./index.html是文件:${stats.isFile()}`)
//     console.log(`./index.html是目錄:${stats.isDirectory()}`)
// })
/**
 * fs.readFile(path[, options], callback)
 * path <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符
 * options <Object> | <string>
 * encoding <string> | <null> 默認(rèn)值: null
 * flag <string> 請(qǐng)參閱對(duì)文件系統(tǒng) flags 的支持。 默認(rèn)值: 'r'。
 * signal <AbortSignal> 允許中止正在進(jìn)行的讀取文件
 * callback <Function>
 * err <Error> | <AggregateError>
 * data <string> | <Buffer>
 */
// 1. 讀取文件內(nèi)容
// fs.readFile('./index.html',(err,data)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log(`讀取文件成功,文件內(nèi)容是:\n${data}`)
// })

// 2. 以指定格式讀取文件
// const iconv = require('iconv-lite')
// fs.readFile('./index.html',(err,data)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log(`讀取文件成功,文件內(nèi)容是:\n${data}`)
//     console.log("讀取文件成功,文件內(nèi)容是:\n",iconv.decode(data,'gbk'))
// })
/**================================================================================ */

/**
 * fs.readdir(path[, options], callback)
 * path <string> | <Buffer> | <URL>
 * options <string> | <Object>
 * encoding <string> 默認(rèn)值: 'utf8'
 * withFileTypes <boolean> 默認(rèn)值: false
 * callback <Function>
 * err <Error>
 * files <string[]> | <Buffer[]> | <fs.Dirent[]>
 *
 */
// 1. 讀取當(dāng)前目錄下所有的文件
// fs.readdir('./',(err,files)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log(files)
// })

// 2. 獲取文件類型
// fs.readdir('./', { withFileTypes: true }, (err, files) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log(files)
// })
/**
 * fs.rename(oldPath, newPath, callback)
 * oldPath <string> | <Buffer> | <URL>
 * newPath <string> | <Buffer> | <URL>
 * callback <Function>
 * err <Error>
 */
// fs.rename('./index.html', './main.html', (err) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log('重命名成功')
// })

// fs.rename('./main.html', './temp/main.html', (err) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log('移動(dòng)文件成功')
// })

/**
 * fs.unlink(path, callback)
 * path <string> | <Buffer> | <URL>
 * callback <Function>
 * err <Error>
 */
// fs.unlink('./temp/main.html', (err) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log("刪除文件成功")
// })
/**
 * fs.rmdir(path[, options], callback)
 * path <string> | <Buffer> | <URL>
 * options <Object>
 * maxRetries <integer> 如果遇到 EBUSY、EMFILE、ENFILE、ENOTEMPTY 或 EPERM 錯(cuò)誤,
 *           Node.js 將在每次嘗試時(shí)以 retryDelay 毫秒的線性退避等待時(shí)間重試該操作。 
 *           此選項(xiàng)表示重試次數(shù)。 如果 recursive 選項(xiàng)不為 true,則忽略此選項(xiàng)。 默認(rèn)值: 0。
 * recursive <boolean> 如果為 true,則執(zhí)行遞歸目錄刪除。 在遞歸模式下,操作將在失敗時(shí)重試。 默認(rèn)值: false。 已棄用。
 * retryDelay <integer> 重試之間等待的時(shí)間(以毫秒為單位)。 如果 recursive 選項(xiàng)不為 true,則忽略此選項(xiàng)。 默認(rèn)值: 100。
 * callback <Function>
 * err <Error>
 */
// fs.rmdir('./temp', (err) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log('刪除空的文件夾')
// })
function emptyDir(path) {
    const files = fs.readdirSync(path); //同步讀取文件夾
    files.forEach(file => {             //刪除文件夾中的所有文件/夾
        const filePath = `${path}/${file}`;
        const stats = fs.statSync(filePath);
        if (stats.isDirectory()) {
            emptyDir(filePath);
        } else {
            fs.unlinkSync(filePath);
            console.log(`刪除${file}文件成功`);
        }
    });
    fs.rmdirSync(path)                  //刪除文件夾
}
emptyDir('./node_modules')

到此這篇關(guān)于總結(jié)Node.js中9種fs模塊文件操作方法(文件夾遞歸刪除知識(shí))的文章就介紹到這了,更多相關(guān)Node.js fs模塊內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • nodejs多版本管理總結(jié)

    nodejs多版本管理總結(jié)

    這篇文章主要介紹了nodejs多版本管理的相關(guān)知識(shí)點(diǎn),以及實(shí)際操作方法和代碼,有需要的朋友參考下。
    2018-04-04
  • Node.js API詳解之 module模塊用法實(shí)例分析

    Node.js API詳解之 module模塊用法實(shí)例分析

    這篇文章主要介紹了Node.js API詳解之 module模塊用法,結(jié)合實(shí)例形式分析了Node.js API中module模塊基本功能、原理、用法及操作注意事項(xiàng),需要的朋友可以參考下
    2020-05-05
  • 在node.js中怎么屏蔽掉favicon.ico的請(qǐng)求

    在node.js中怎么屏蔽掉favicon.ico的請(qǐng)求

    這篇文章主要介紹了在node.js中怎么屏蔽掉favicon.ico的請(qǐng)求,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-03-03
  • 如何使用Node寫靜態(tài)文件服務(wù)器

    如何使用Node寫靜態(tài)文件服務(wù)器

    這篇文章主要介紹了如何使用Node寫靜態(tài)文件服務(wù)器,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,感興趣的小伙伴可以參考一下
    2022-09-09
  • nodejs檢測(cè)因特網(wǎng)是否斷開的解決方案

    nodejs檢測(cè)因特網(wǎng)是否斷開的解決方案

    這篇文章主要給大家介紹了關(guān)于nodejs如何檢測(cè)因特網(wǎng)是否斷開的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用nodejs具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • webstorm中配置nodejs環(huán)境及npm的實(shí)例

    webstorm中配置nodejs環(huán)境及npm的實(shí)例

    今天小編就為大家分享一篇webstorm中配置nodejs環(huán)境及npm的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-05-05
  • 詳細(xì)分析Node.js 多進(jìn)程

    詳細(xì)分析Node.js 多進(jìn)程

    這篇文章主要介紹了Node.js 多進(jìn)程的的相關(guān)資料,文中示例代碼非常詳細(xì),幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-06-06
  • Node.js數(shù)據(jù)庫鉤子的使用

    Node.js數(shù)據(jù)庫鉤子的使用

    本文主要介紹了Node.js數(shù)據(jù)庫鉤子的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • nodejs 整合kindEditor實(shí)現(xiàn)圖片上傳

    nodejs 整合kindEditor實(shí)現(xiàn)圖片上傳

    這篇文章主要介紹了nodejs 整合kindEditor實(shí)現(xiàn)圖片上傳,需要的朋友可以參考下
    2015-02-02
  • nodejs高大上的部署方式(PM2)

    nodejs高大上的部署方式(PM2)

    這篇文章主要介紹了nodejs高大上的部署方式(PM2) ,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-09-09

最新評(píng)論