Nodejs fs模块

来源:互联网 发布:单片机 光耦 编辑:程序博客网 时间:2024/06/01 08:59

fs 模块中所有的方法都有同步和异步两种形式.异步方法中回调的第一个参数总是留给异常参数,如果方法成功完成,那么这个参数为null或者undefined.

读取文件

使用 fs.readFile(filename,[options],callback) 或者 fs.resdFileSync(filename,[options],callback)

readFile接收三个参数,filename是文件名;[options]是可选的参数,为一个对象,用于指定文件编码(encoding)及操作方式(flag);callback是回调函数

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

也可以这么读

const fs = require('fs')fs.readFile('./test.txt','utf-8',function(err,data){    if(err){        throw err    }    console.log(data)})

写入文件

使用 fs.wirteFile(filename,data,[options],callback) 或者 fs.writeFileSync(filename,data,[options],callback) 写入内容到文件.

writeFile接收四个参数,filename是文件名称;data是要写入文件的数据;[options]是一个对象为可选参数,包含编码格式(encoding),模式(mode)以及操作方式(flag);callback是回调函数。

 const fs = require('fs') fs.writeFile('./test2.txt','hello world',function(err){     if(err){         throw err     }    console.log('success') })

#### flag 的值

值 含义 r 读取文件,文件不存在报错 r+ 读取并写入文件,文件不存在报错 rs 以同步方式读取文件,文件不存在时报错 rs+ 以同步方法读取并写入文件,文件不存在时报错 w 写入文件,文件不存在同创建,存在则清空 w+ 写入文件,文件存在会报错 ws 读取并写入文件,文件不存在同创建,存在则清空 ws+ 读取并写入文件,文件存在会报错 a 以追加的方式写入文件,文件不存在则创建 a+ 以追加的方式写入文件,文件存在会报错 as 读取并追加写入文件,文件不存在则创建 as+ 读取并追加写入文件,文件存在会报错

使用read(),write()来读写文件

fs.open(path, flags, [mode], callback)方法,此方法用于打开文件,以便fs.read()读取。path是文件路径,flags是打开文件的方式,[mode]是文件的权限(可选参数,默认值是0666),callback是回调函数。

fs.close(fd, [callback])用于关闭文件,fd是所打开文件的文件描述符。

fs.read(fd, buffer, offset, length, position, callback)方法接收6个参数。

fs.write(fd, buffer, offset, length, position, callback)方法的参数和fs.read()相同,buffer是需要写入文件的内容。

  • fd是文件描述符,必须接收fs.open()方法中的回调函数返回的第二个参数;
  • buffer是存放读取到的数据的Buffer对象;
  • offset指定向buffer中存放数据的起始位置;
  • length指定读取文件中数据的字节数;
  • position指定在文件中读取文件内容的起始位置;
  • callback是回调函数,回调函数的参数:
    • err用于抛出异常;
    • bytesRead是从文件中读取内容的实际字节数;
    • buffer是被读取的缓存区对象。
const fs = require('fs')fs.open('./test.txt','r',function(err,fd){    if(err){        throw err    }    console.log('success open file , fd is ' + fd )    let buffer = new Buffer(255)    fs.read(fd,buffer,0,255,0,function(err,bytesRead,buffer){        if(err){            throw err        }        console.log('get ' + bytesRead + ' bytes')        console.log('the get data is ' + buffer.slice(0,bytesRead).toString())        fs.close(fd)    })})
const fs = require('fs')fs.open('./test.txt','w',function(err,fd){    if(err){        throw err    }    console.log('success open file , fd is ' + fd )    let buffer = new Buffer('I Love you , Miss Wei')    fs.write(fd,buffer,0,buffer.length,0,function(err,written,buffer){        if(err){            throw err        }        console.log('success write data. the data is :' + buffer.slice(0,buffer.bufferLength).toString())        fs.close(fd)    })})

创建空目录与删除空目录

可以使用 fs.mkdir(path,[mode],callback)来创建空目录,也可以使用 fs.rmdir(path,callback)来删除空目录

path是需要创建的目录,[mode]是目录的权限(默认值是0777),callback 是回调函数。

const fs = require('fs')fs.mkdir('./testDir',function(err){    if(er){        throw err    }    console.log('success create')    fs.rmdir('./testDir',function(err){        if(err){            throw err        }        console.log('success remove')    })})

读取目录

使用fs.readdir(path,callback)来读取目录

const fs = require('fs')fs.readdir('./testdir',function(err,files){    if(err){        throw err    }    console.log(files)})