总结Node.js中9种fs模块文件操作方法(文件夹递归删除知识)

目录
  • 一、前言
  • 二、fs.mkdir()创建文件夹
    • 2.1 最简单的案例
    • 2.2 递归创建文件夹
  • 三、fs.wirteFile()创建、写文件
    • 3.1 创建并写入一个文件
    • 3.2 重写文件并指定编码
    • 3.3 写入GBK格式的文件
  • 四、fs.appendFile()文件后追加内容
    • 4.1 使用追加的方式创建并写入内容
    • 4.2 追加内容
  • 五、fs.stat()判断路径是目录还是文件
    • 5.1 判断文件案例
  • 六、fs.readFile()读取文件内容
    • 6.1 以默认格式读取文件
    • 6.2 以指定格式(这里是GBK)读取文件
  • 七、fs.readdir()读取文件夹中的内容
    • 7.1 读取文件夹案例
    • 7.2 获取文件类型
  • 八、fs.raname()重命名、移动文件
    • 8.1 重命名文件
    • 8.2 移动文件
  • 九、fs.unlink()删除文件
    • 9.1 删除文件案例
  • 十、fs.rmdir()删除文件夹
    • 10.1 删除空的文件夹
    • 10.2 删除非空的文件夹
  • 十一、总结
  • 十二、本文源码

本文主要介绍了Node.js常用的文件操作方法,以及常见的处理场景,文件追加,文件夹递归删除等。

一、前言

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

二、fs.mkdir()创建文件夹

异步的创建一个文件夹:

语法:

fs.mkdir(path[,options],callback)
/**
 * path <string> | <Buffer> | <URL>
 * options <Object> | <integer>
 * recursive <boolean> 默认值: false
 * mode <string> | <integer> Windows 上不支持。 默认值: 0o777。
 * callback <Function>
 * err <Error>
 * path <string> | <undefined> 仅当创建目录时将 recursive 设置为 true。
 */

2.1 最简单的案例

最简单的案例,在当前目录下创建一个temp文件夹:

const fs = require('fs')

fs.mkdir('./temp',(err)=>{
    if(err){
        console.log(err.message)
        return
    }
    console.log('创建文件夹成功')
})

代码执行结果:

2.2 递归创建文件夹

使用参数{recursive:true}创建多层次的文件夹。

fs.mkdir('./parent/son/grandson',{recursive:true},(err,path)=>{
    if(err){
        console.log(err.message)
        return
    }
    console.log('递归创建文件夹成功',path)
})

代码执行结果:

注意: 在使用{recursive:true}参数时,回调对应的会增加一个path参数,其他情况下没有。

三、fs.wirteFile()创建、写文件

file 是文件名时,将数据异步地写入文件,如果文件已存在则替换该文件。 data 可以是字符串或缓冲区。

file 是文件描述符时,其行为类似于直接调用 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> 默认值: 'utf8'
 * mode <integer> 默认值: 0o666
 * flag <string> 请参阅对文件系统 flags 的支持。 默认值: 'w'。
 * signal <AbortSignal> 允许中止正在进行的写入文件
 * callback <Function>
 * err <Error> | <AggregateError>
 */

3.1 创建并写入一个文件

创建一个名为index.html的文件,并写入一行字符串。

fs.writeFile('./index.html',"<h1>你好,中国</h1>",(err)=>{
    if(err){
        console.log(err.message)
        return
    }
    console.log("创建写入文件成功")
})

代码执行结果如下:

3.2 重写文件并指定编码

重写index.html并为文件指定编码:

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

代码执行效果如下:

原文件内容被覆盖。

3.3 写入GBK格式的文件

Node.js仅支持utf8 ucs2 ascii binary base64 hex这几种格式,对于GBKGB2312等特殊格式需要使用额外的库(这里使用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格式写入成功")
})

代码执行结果:

注意底部的编码格式,如果使用utf-8打开文件会乱码的呦!

四、fs.appendFile()文件后追加内容

异步地将数据追加到文件,如果该文件尚不存在,则创建该文件。

语法:

fs.appendFile(path, data[, options], callback)
/**
 * path <string> | <Buffer> | <URL> | <number> 文件名或文件描述符
 * data <string> | <Buffer>
 * options <Object> | <string>
 * encoding <string> | <null> 默认值: 'utf8'
 * mode <integer> 默认值: 0o666
 * flag <string> 请参阅对文件系统 flags 的支持。 默认值: 'a'。
 * callback <Function>
 * err <Error>
 */

4.1 使用追加的方式创建并写入内容

fs.appendFile('./test.txt', '测试写入', (err) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log("使用追加的方式创建并写入文件")
})

代码执行结果:

4.2 追加内容

fs.appendFile('./test.txt', "\n追加测试", (err) => {
    if (err) {
        console.log(err.message)
        return
    }
    console.log('在已经存在的文件中追加内容')
})

代码执行结果:

五、fs.stat()判断路径是目录还是文件

判断路径是文件还是目录。

语法:

 fs.stat(path[, options], callback)
/**
 * path <string> | <Buffer> | <URL>
 * options <Object>
 * bigint <boolean> 返回的 <fs.Stats> 对象中的数值是否应为 bigint。 默认值: 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()}`)
})

代码执行效果:

六、fs.readFile()读取文件内容

异步地读取文件的全部内容。

语法:

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 以默认格式读取文件

以默认的格式(utf-8)读取文件内容:

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

代码执行结果:

如果要读取的文件不是utf-8格式,就会出现乱码,这时就需要指定读取格式。

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${data}`)
    console.log("读取文件成功,文件内容是:\n",iconv.decode(data,'gbk'))
})

代码执行结果如下:

七、fs.readdir()读取文件夹中的内容

读取目录的内容。 回调有两个参数 (err, files),其中 files 是目录中文件名的数组,不包括 '.''..'

语法:

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

7.1 读取文件夹案例

读取当前文件夹下所有的文件。

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

代码执行结果:

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 获取文件类型

我们可以在读取文件列表的时候,获取文件的类型。

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

代码执行结果:

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()重命名、移动文件

oldPath 处的文件异步重命名为作为 newPath 提供的路径名。 如果 newPath 已经存在,则它将被覆盖。 如果在 newPath 中有目录,则会引发错误。 除了可能的异常之外,没有为完成回调提供任何参数。

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('重命名成功')
})

代码执行结果:

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 移动文件

./main.html移动到./temp/main.html

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

代码执行结果:

PS E:\Code\Node\demos> node .\01-fs.js
移动文件成功
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()删除文件

异步地删除文件或符号链接。 除了可能的异常之外,没有为完成回调提供任何参数。

9.1 删除文件案例

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

代码执行结果:

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 错误,
 *           Node.js 将在每次尝试时以 retryDelay 毫秒的线性退避等待时间重试该操作。
 *           此选项表示重试次数。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 0。
 * recursive <boolean> 如果为 true,则执行递归目录删除。 在递归模式下,操作将在失败时重试。 默认值: false。 已弃用。
 * retryDelay <integer> 重试之间等待的时间(以毫秒为单位)。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 100。
 * callback <Function>
 * err <Error>
 */

10.1 删除空的文件夹

删除./temp文件夹。

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

代码执行结果:

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 删除非空的文件夹

这里使用的是同步的文件处理函数,用于递归的删除文件夹。

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')

代码执行结果:

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

十一、总结

本文总结了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> 默认值: false
 * mode <string> | <integer> Windows 上不支持。 默认值: 0o777。
 * callback <Function>
 * err <Error>
 * path <string> | <undefined> 仅当创建目录时将 recursive 设置为 true。
 */
const fs = require('fs')

// 1. 最简单的测试案例
// fs.mkdir('./temp',(err)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log('创建文件夹成功')
// })

// 2. 递归创建文件夹
// fs.mkdir('./parent/son/grandson',{recursive:true},(err,path)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log('递归创建文件夹成功',path)
// })

/**-------------------------------------------------------------------------------------- */
/**-------------------------------------------------------------------------------------- */
/**-------------------------------------------------------------------------------------- */
/**
 * fs.writeFile(file, data[, options], callback)
 * file <string> | <Buffer> | <URL> | <integer> 文件名或文件描述符
 * data <string> | <Buffer> | <TypedArray> | <DataView> | <Object>
 * options <Object> | <string>
 * encoding <string> | <null> 默认值: 'utf8'
 * mode <integer> 默认值: 0o666
 * flag <string> 请参阅对文件系统 flags 的支持。 默认值: 'w'。
 * signal <AbortSignal> 允许中止正在进行的写入文件
 * callback <Function>
 * err <Error> | <AggregateError>
 */

// 1. 创建并写入一个文件
// fs.writeFile('./index.html',"<h1>你好,中国</h1>",(err)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log("创建写入文件成功")
// })

// 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> 默认值: 'utf8'
 * mode <integer> 默认值: 0o666
 * flag <string> 请参阅对文件系统 flags 的支持。 默认值: 'a'。
 * callback <Function>
 * err <Error>
 */
// 1. 创建文件并写入内容
// fs.appendFile('./test.txt', '测试写入', (err) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log("使用追加的方式创建并写入文件")
// })

// 2. 追加内容
// fs.appendFile('./test.txt', "\n追加测试", (err) => {
//     if (err) {
//         console.log(err.message)
//         return
//     }
//     console.log('在已经存在的文件中追加内容')
// })
/** =============================================================================== */
/**
 * fs.stat(path[, options], callback)
 * path <string> | <Buffer> | <URL>
 * options <Object>
 * bigint <boolean> 返回的 <fs.Stats> 对象中的数值是否应为 bigint。 默认值: 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> 默认值: null
 * flag <string> 请参阅对文件系统 flags 的支持。 默认值: 'r'。
 * signal <AbortSignal> 允许中止正在进行的读取文件
 * callback <Function>
 * err <Error> | <AggregateError>
 * data <string> | <Buffer>
 */
// 1. 读取文件内容
// fs.readFile('./index.html',(err,data)=>{
//     if(err){
//         console.log(err.message)
//         return
//     }
//     console.log(`读取文件成功,文件内容是:\n${data}`)
// })

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

/**
 * fs.readdir(path[, options], callback)
 * path <string> | <Buffer> | <URL>
 * options <string> | <Object>
 * encoding <string> 默认值: 'utf8'
 * withFileTypes <boolean> 默认值: false
 * callback <Function>
 * err <Error>
 * files <string[]> | <Buffer[]> | <fs.Dirent[]>
 *
 */
// 1. 读取当前目录下所有的文件
// 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('移动文件成功')
// })

/**
 * 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 错误,
 *           Node.js 将在每次尝试时以 retryDelay 毫秒的线性退避等待时间重试该操作。
 *           此选项表示重试次数。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 0。
 * recursive <boolean> 如果为 true,则执行递归目录删除。 在递归模式下,操作将在失败时重试。 默认值: false。 已弃用。
 * retryDelay <integer> 重试之间等待的时间(以毫秒为单位)。 如果 recursive 选项不为 true,则忽略此选项。 默认值: 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')

到此这篇关于总结Node.js中9种fs模块文件操作方法(文件夹递归删除知识)的文章就介绍到这了,更多相关Node.js fs模块内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • 基于node.js的fs核心模块读写文件操作(实例讲解)

    node.js 里fs模块 常用的功能 实现文件的读写 目录的操作 - 同步和异步共存 ,有异步不用同步 - fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFile方法 - 文件大分流读取,stream - 引入fs模块 - let fs=require('fs') 同步读取文件 -fs.readFileSync('路径',utf8); let result=fs.readFileSync('./1.txt','utf8'); 异步读取文件,用参数err捕获

  • Node.js中文件系统fs模块的使用及常用接口

    fs是filesystem的缩写,该模块提供本地文件的读写能力,基本上是POSIX文件操作命令的简单包装.但是,这个模块几乎对所有操作提供异步和同步两种操作方式,供开发者选择. JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统. fs 模块提供了非常多的接口,这里主要说一下一些常用的接口. 1.常用API快速复习 fs.stat 检测是文件还是目录 const fs

  • Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法

    fs模块.js: /* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件(文件不存在就创建,但不能创建目录) 4. fs.appendFile 写入追加文件 5.fs.readFile 读取文件 6.fs.readdir 读取目录 7.fs.rename 重命名 8. fs.rmdir 删除目录 9. fs.unlink 删除文件 */ var fs=require('fs');

  • node.js-fs文件系统模块这是你知道吗

    目录 1.什么是fs文件系统模块 2.读取指定文件的内容 1.fs.readFile()的语法格式 2.fs.readFile()读取文件内容 3.判断文件是否读取成功 3.向指定文件写入内容 1.fs.writeFile()的语法格式 2.fs.writeFile()写入文件 3.fs.writeFile()判断写入是否成功 4.写入文件和读取文件综合应用 5.fs模块-路径动态拼接问题 总结 1.什么是fs文件系统模块 [解释]: fs文件系统模块是Node.js官方提供的,用来操作文件的模

  • 浅谈Node.js:fs文件系统模块

    fs文件系统模块,这是一个非常重要的模块,对文件的操作都基于它.该模块的所有方法都有同步和异步两种方式,下面便介绍一下该模块的使用. 1.检测当前进程对文件的权限 使用fs.access(path[, mode], callback)方法检查权限,mode参数是一个整数,有以下常量值: fs.constants.F_OK     path对调用进程是可见的,既存在 fs.constants.R_OK     path是可读的 fs.constants.W_OK    path是可写的 fs.co

  • node.js中fs文件系统模块的使用方法实例详解

    本文实例讲述了node.js中fs文件系统模块的使用方法.分享给大家供大家参考,具体如下: node.js中为我们提供了fs文件系统模块,实现对文件或目录的创建,修改和删除等操作. fs模块中,所有的方法分为同步和异步两种实现. 有 sync 后缀的方法为同步方法,没有 sync 后缀的方法为异步方法. 一.文件的整个读取 const fs = require('fs'); //参数一表示读取的文件 //参数二表示读取的配置,{encoding:'null', flag:'r'} //encod

  • node.js基于fs模块对系统文件及目录进行读写操作的方法详解

    本文实例讲述了node.js基于fs模块对系统文件及目录进行读写操作的方法.分享给大家供大家参考,具体如下: 如果要用这个模块,首先需要引入,fs已经属于node.js自带的模块,所以直接引入即可 var fs = require('fs'); 1.读取文件readFile方法使用 fs.readFile(filename,[option],callback) 方法读取文件. 参数说明: filename String 文件名 option Object   encoding String |n

  • 总结Node.js中9种fs模块文件操作方法(文件夹递归删除知识)

    目录 一.前言 二.fs.mkdir()创建文件夹 2.1 最简单的案例 2.2 递归创建文件夹 三.fs.wirteFile()创建.写文件 3.1 创建并写入一个文件 3.2 重写文件并指定编码 3.3 写入GBK格式的文件 四.fs.appendFile()文件后追加内容 4.1 使用追加的方式创建并写入内容 4.2 追加内容 五.fs.stat()判断路径是目录还是文件 5.1 判断文件案例 六.fs.readFile()读取文件内容 6.1 以默认格式读取文件 6.2 以指定格式(这里

  • 在 Node.js 中使用原生 ES 模块方法解析

    从版本 8.5.0 开始,Node.js 开始支持原生 ES 模块,可以通过命令行选项打开该功能.新功能很大程度上得归功于 Bradley Farias. 1.演示 这个示例的代码目录结构如下: esm-demo/ lib.mjs main.mjs lib.mjs: export function add(x, y) { return x + y; } main.mjs: import {add} from './lib.mjs'; console.log('Result: '+add(2, 3

  • Node.js中的events事件模块知识点总结

    通过对Node的学习及应用,我们知道NodeJS其采用单线程.事件驱动.非阻塞I/O等架构设计,非常适用于高并发.I/O密集型应用. 1. 什么是事件驱动? 事件驱动,简单来说就是通过有效方法来监听事件状态的变化,并在发生变化时做出相应的动作. 举一个生活应用的场景来理解:当我们去饭店吃饭点餐,当我们下单之后,服务员告诉我们的订单号(这时候可以理解为注册了一个事件),我们在坐着等候,这时候我们的耳朵就一直监听着服务员的喊号,当喊到我们的时候,我们可以去前台取餐. 2. 事件模型 NodeJS的事

  • Node.js中DNS模块学习总结

    1. DNS 在Node.js中,提供DNS模块,以实现域名查找及域名解析的处理. 在DNS模块中,提供了三个主方法及一系列便捷方法. resolve方法:用于将一个域名解析为一组DNS记录. reverse方法: 用于将IP地址转换为一组域名. lookup方法: 用于将一个域名转换成IP地址. DNS模块中的其余便捷方法均为resolve方法的一种便捷形式. 2. 使用resolve方法将域名解析为DNS记录 `DNS.resolve(domain, [rrtype], callback(e

  • Node.js中路径处理模块path详解

    前言 在node.js中,提供了一个path某块,在这个模块中,提供了许多使用的,可被用来处理与转换路径的方法与属性,将path的接口按照用途归类,仔细琢磨琢磨,也就没那么费解了.下面我们就来详细介绍下关于Node.js中的路径处理模块path. 获取路径/文件名/扩展名 获取路径:path.dirname(filepath) 获取文件名:path.basename(filepath) 获取扩展名:path.extname(filepath) 获取所在路径 例子如下: var path = re

  • Node.js中的模块系统介绍

    为了让Node.js的文件可以相互调用,Node.js提供了一个简单的模块系统. 模块是Node.js 应用程序的基本组成部分,文件和模块是一一对应的.换言之,一个 Node.js 文件就是一个模块,这个文件可能是JavaScript 代码.JSON 或者编译过的C/C++ 扩展. 一.exports引入模块 模块的创建 首先,我们在项目中创建hello.js,代码如下: exports.world = function() { console.log('Hello World'); } exp

  • Node.js 中的 fs 模块与Path模块方法详解

    概述: 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集.可以通过调用 require("fs") 来获取该模块.文件系统模块中的所有方法均有异步和同步版本. 文件系统模块中的异步方法需要一个完成时的回调函数作为最后一个传入形参. 回调函数的构成由调用的异步方法所决定,通常情况下回调函数的第一个形参为返回的错误信息. 如果异步操作执行正确并返回,该错误形参则为null或者undefined.如果使用的是同步版本的操作方法,一旦出现错误,会以通常的抛出错误的形式返回

  • Node.js中的模块机制学习笔记

    Javascript自诞生以来,曾经没有人拿它当做一门编程语言.在Web 1.0时代,这种脚本语言主要被用来做表单验证和网页特效.直到Web 2.0时代,前端工程师利用它大大提升了网页上的用户体验,JS才被广泛重视起来.在JS逐渐流行的过程中,它大致经历了工具类库.组件库.前端框架.前端应用的变迁.Javascript先天就缺乏一项功能:模块,而CommonJS规范的出现则弥补了这一缺陷.本文将介绍CommonJS规范及Node的模块机制. 在其他高级语言中,Java有类文件,Python有im

随机推荐