• Node.js核心模块-fs文件系统


    fs是file-system的简写,文件系统的意思。在Node中如果想要进行文件操作,就必须引入fs这个核心模块。

    引入

    const fs = require('fs')

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

    • path:要读取的文件路径
    • options:可选
      • encoding,指定字符编码
    • callback:回调函数,有两个参数,err和data
      • err:读取失败返回错误对象,读取成功返回null
      • data:读取成功返回读到的数据,否则返回undefined

    比如文件路径错误时:err打印出错误对象,data为undefined

    const fs = require('fs')
    
    fs.readFile('./1.txt', function (err, data) {
        console.log(err)
        console.log(data)
    })
    
    //{ [Error: ENOENT: no such file or directory, open './1.txt'] errno: -2, code: 'ENOENT', syscall: 'open', path: './1.txt' }
    // undefined

    文件路径正常且读取成功时:

    // null
    // <Buffer 68 65 6c 6c 6f>

    1.txt中文件读取成功并返回了buffer。文件中原本存储的是二进制数据0和1,二进制转为16进制即buffer。如果想转成我们认识的字符,可以通过toString()方法:

    const fs = require('fs')
    
    fs.readFile('./1.txt', function (err, data) {
        console.log(data.toString())
    })
    
    // hello

    或者通过字符编码

    const fs = require('fs')
    
    fs.readFile('./1.txt', 'utf8', function (err, data) {
        console.log(data)
    })
    
    // hello

    在读文件时建议做容错,避免读取错误data取不到报错

    fs.readFile('./1.txt', function (err, data) {
        if (err) {
            console.log(err)
        } else {
            console.log(data.toString())
        }
    })

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

    • file:要写入的文件路径
    • data:要写入的内容
    • options:可选
    • callback:回调函数
      • err:写入成功时为null,写入错误时为错误对象
    fs.writeFile('./2.txt', '你好', function (err) {
        if (err) {
            console.log(err)
        } else {
            console.log('写入成功')
        }
    })

    如果当前目录中有2.txt,会写入“你好”,如果当前目录中没有这个文件,会创建文件并写入

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

    • path:路径
    • option:可选
    • callback:回调函数
      • err
      • files 目录中文件名的数组

    读取目录的内容

    const fs = require('fs')
    fs.readdir('/Users/lianglanlan/Desktop/code/study/node/www', (err, files) => {
        if (err) {
            return console.log('目录不存在')
        }
        console.log(files)  //[ 'a.txt', 'apple', 'index.html', 'index1.html' ]
    })

     fs.existsSync(path)

    • path:路径
    • 返回值:布尔类型

    如果路径存在,返回true,否则返回false

    const fs = require('fs')
    if (fs.existsSync('./1.txt')) {
        console.log('该路径已存在');
    }

    fs.unlink(path,callback)

    • path:路径
    • callback:回调函数
      • err

    异步地删除文件或符号链接。

    const fs = require('fs')
    fs.unlink('./1.txt', err => {
        if (err) {
            console.log(err)
        } else {
            console.log('文件已被删除')
        }
    })
    //删除了同目录中的1.txt

    如果path不存在,会报错no such file or directory

    如果path为目录路径,会报错 operation not permitted

    fs.unlinkSync(path)

    同步的fs.unlink(),返回undefined

    fs.symlink(target,path[,type],callback)

    • target
    • path
    • type  仅在windows可用
    • callback
      • err 异常参数

    会创建名为path的链接,该链接指向target

    const fs = require('fs')
    fs.symlink('./index.html', './indextwo.html', err => {
        console.log(err)
    })
    
    //在当前目录创建了indextwo.html,指向index.html。当index.html修改时,indextwo.html也会同步修改

    fs.symlinkSync(target,path[,type])

    同步的fs.symlink,返回undefined

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

    返回fs.stats类

    fs.statSync(path[, options])

    • path:路径

    同步的fs.stat。返回fs.stats类

    fs.lstat(path[options],callback)

    与fs.stat相同。只是如果path是符号链接,则查看的是链接自身,而不是它指向的文件

    fs.stats类

    提供关于文件的信息

    stats.isDirectory()

    如果是目录,则返回true

    stats.isSymbolicLink()

    如果是符号链接,则返回true

    stats.mtime

    上次修改此文件的时间戳

    const fs = require('fs')
    const fsStatus = fs.statSync('./index.html')
    console.log(fsStatus.mtime) //2020-12-03T10:32:52.276Z

    stats.size

    文件的大小,以字节为单位

    const fs = require('fs')
    console.log(fs.statSync('./index.html').size) //866

    fs.createReadStream(path[,option])

    • path:string | buffer | url
    • options:
      • autoClose:默认值true。如果为false,即使发生错误,文件描述符也不会被关闭。如果为true,则当error或end事件时,文件描述符会被自动关闭。

    返回fs.ReadStream实例

    fs.createWriteStream(path[,option])

    返回fs.WriteStream实例

    fs.ReadStream类

    继承自stream.readable

    fs.WriteStream类

    继承自stream.writeable

    fs.mkdirSync(path[,options])

    • path:路径
    • options
      • recursive:布尔,默认值false

    同步地创建目录。如果recursive为true,返回创建的目录路径。否则返回undefined。

    fs.copyFile(src,dest[,mode],callback)

    • src: 要拷贝的源文件名
    • dest:拷贝操作的目标文件名。如果已经存在,会进行覆盖
    • mode:用于拷贝操作的修饰符,默认值0
    • callback
      • err:异常
    fs.copyFile('./index.html', './index2.html', err => {
        console.log(err)
    })
  • 相关阅读:
    记录日常Linux常用软件
    CentOS7.2重置root密码的处理方法
    Nginx配置文件详细说明
    ES项目实战
    foreachRDD
    Hive的数据倾斜
    SparkStreaming实战(数据库(NoSQL))
    Spark(4)
    SparkStreming中 `transform()`算子的 的使用
    RDD源码分析
  • 原文地址:https://www.cnblogs.com/lianglanlan/p/12092357.html
Copyright © 2020-2023  润新知