zoukankan      html  css  js  c++  java
  • node.js之fs模块

    fs模块

    fs模块用于对系统文件及目录进行读写操作。

    fs中的同步异步

    模块中所有方法都有同步和异步两种形式,异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,该参数为null或undefined

    fs模块中的方法

    • fs.mkdir(路径,回调函数) : 创建文件夹
    • fs.readdir(路径,回调函数) : 读取文件目录
    • fs.readFile(路径,读取格式,回调函数) : 读取文件
    • fs.writeFile(路径,写入的内容,写入的格式,回调函数) : 写入文件【写入文件属于覆盖】
    • fs.appendFile(路径,追加的内容,写入的格式,回调函数) : 在当前文件后添加内容
    • fs.copyFile(路径1,路径2,回调函数) : 拷贝文件
    • fs.unlink(路径,回调函数) : 删除文件

    fs.mkdir

    异步地创建目录。 除了可能的异常,完成回调没有其他参数

    let fs = require('fs')
    fs.mkdir('./1.text',(err)=>{
        if(err){
            throw new Error(err)
        }else{
            console.log('创建成功')
        }
    })
    

    执行上面代码,创建文件成功会输出创建成功,当前文件夹下会创建一个1.text文件

    同步写法

    fs.mkdirSync('./1.text')
    

    fs.readdir

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

    let fs = require('fs')
    fs.readdir('./',(err, files)=>{
        console.log(err,files)  // null [ '1.js', 'fs.js' ]
    })
    

    执行上面代码前,我在当前文件夹下创建了一个1.js文件,调用fs.readdir,这是回调函数的第二个参数会输出当前文件夹下的所有文件名

    fs.readFile

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

    有一个文件1.js内容如下

    // 今天天气真好
    

    和1.js相同目录中有一个fs.js文件,内容如下

    let fs = require('fs')
    fs.readFile('./1.js',(err, data)=>{
        if(err){
            throw err
        }else{
            console.log(data)
        }
    })
    

    运行结果<Buffer 2f 2f 20 e4 bb 8a e5 a4 a9 e5 a4 a9 e6 b0 94 e7 9c 9f e5 a5 bd>,这是原始二进制数据在缓冲区中的内容。

    要显示文件内容可以使用toString()或者设置输出编码。

    toString写法
    let fs = require('fs')
    fs.readFile('./1.js',(err, data)=>{
        if(err){
            throw err
        }else{
            console.log(data.toString()) // 今天天气真好
        }
    })
    
    设置utf-8编码写法:
    let fs = require('fs')
    fs.readFile('./1.js','utf-8',(err, data)=>{
        if(err){
            throw err
        }else{
            console.log(data) // 今天天气真好
        }
    })
    

    fs.writeFile

    异步地将数据写入到一个文件,如果文件已存在则覆盖该文件。 data 可以是字符串或 buffer。

    let fs = require('fs')
    fs.writeFile('./1.js','今天想去哪玩','utf-8',(err, data)=>{
        if(err) {
            throw err
        }
        fs.readFile('./1.js','utf-8',(err,data)=>{
            if(!err) console.log(data) // 今天想去哪玩
        })
    })
    

    执行上面代码,1.js文件夹的内容会被覆盖成今天想去哪玩,然后我们在调用fs.readFile,读取文件夹,可以看到上面输出今天去哪玩,说明我们写入成功了

    fs.appendFile

    异步地将数据追加到此文件,如果该文件尚不存在,则创建该文件。数据可以是字符串

    我们先创建一个1.js,文件内容如下

    今天天气真好,
    

    然后我们执行下面的代码

    let fs = require('fs')
    fs.appendFile('./1.js','今天想去哪玩','utf-8',(err)=>{
        if(err) {
            throw err
        }
        fs.readFile('./1.js','utf-8',(err,data)=>{
            if(!err) console.log(data) // 今天天气真好,今天想去哪玩
        })
    })
    

    执行上面代码,会在1.js文件,后面添加进去内容

    fs.copyFile

    异步地将 src 拷贝到 dest。 默认情况下,如果 dest 已经存在,则覆盖它。 除了可能的异常,回调函数没有其他参数。 Node.js 不保证拷贝操作的原子性。 如果在打开目标文件用于写入后发生错误,则 Node.js 将尝试删除目标文件。

    1.js,文件内容如下

    今天天气真好,今天想去哪玩
    

    执行下面代码

    let fs = require('fs')
    fs.copyFile('./1.js','./2.js',(err)=>{
        if(err) {
            throw err
        }
        fs.readFile('./2.js','utf-8',(err,data)=>{
            if(!err) console.log(data) // 今天天气真好,今天想去哪玩
        })
    })
    

    上面代码执行,如果没有2.js文件,会先创建一个2.js文件,然后将1.js文件的内容拷贝到2.js,文件中。我们可以看到读取2.js文件会输出今天添加真好,今天想去哪玩

    异步地删除文件或符号链接。 除了可能的异常,完成回调没有其他参数。

    let fs = require('fs')
    fs.unlink('./1.js',(err)=>{
        if(err) {
            throw err
        }
    })
    

    执行上面代码,将会把1.js文件删除

  • 相关阅读:
    C++中虚继承的作用
    游戏程序设计学习初窥简单DirectX代码实现
    vue4.x更改默认端口 larry
    Visual studio 2010几个比较酷的功能
    Web前端编程:勿混淆NodeList与Array
    代码规范之署名
    一则中文文件名引起的问题
    C# WebService调用及数据并行处理
    2010年终总结
    关于DotNetNuke
  • 原文地址:https://www.cnblogs.com/mengxiangji/p/10865309.html
Copyright © 2011-2022 走看看