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文件删除

posted @ 2019-05-14 23:23  我会放电啪啪  阅读(459)  评论(0编辑  收藏  举报