nodejs中的fs模块

原创 2016年05月30日 21:03:34

fs模块为nodejs的核心模块之一,主要处理文件的读写、复制、s删除、重命名等操作。当需要使用该模块时,需要先导入该文件

var fs = require('fs');

nodejs文件系统中的方法均有异步和同步两种版本,例如读取文件内容的函数有异步的fs.readFile()和同步的fs.readFileSync().

fs中的读写操作

文件模块中提供了基本的读写操作、buffer二进制操作和流操作。

基本的读写操作

wirte()和read()方法提供读写操作时,需要执行fs.open(path,flags,[mode],[callback(err,fd)])先打开文件。其中path为文件的路径,flag为打开的方式,可以为r(读)、w(写)(如果文件不存在,则创建),w+(以读写模式打开文件,如果文件不存在,则创建),r+(以读写模式打开文件)、a(以追加模式打开文件,如果文件不存在,则创建),a+(以读取追加模式打开文件,如果文件不存在,则创建。

fs.read(fd,buffer,offset,length,position,callback):其功能为从指定的文件描述符 fd 中读取数据并写入 buffer 指向的缓冲区对象。offset 是buffer 的写入偏移量。length 是要从文件中读取的字节数。position 是文件读取的起始位置,如果 position 的值为 null,则会从当前文件指针的位置读取。回调函数传递bytesRead 和 buffer,分别表示读取的字节数和缓冲区对象。

fs.write(fd,buffer,offset,length[,position],callback):功能为将buffer内容写入fd中。

fs.readFile(file[,option],callback):读取文件。其中file可以为文件名或文件路径,options可以为对象或字符串。包括读取文件时的编码、文件的读取方式(默认为‘r’);
fs.writeFile(file,data[,options],callback):写入文件。data为写入的内容。options为可选参数,可以为encoding(编码方式)、mode(权限)和flag(文件写的方式,默认为’w’)
fs.appendFile(file,data[,options],callback)在文件的末尾添加内容

如要通过readFile和writeFile实现读取一个文件,并把该文件写入另一个文件中

fs.readFile('test.txt',function(err,data){
    if(err){
        console.log(err)
    }
    fs.writeFile('test1.txt',data,0,'utf8',function(err){
        if(err){
            throw err;
        }
    })
})

fs.createReadStream(path[,options]):以流的形式读取文件,options包括flags、encoding、fd、mode、autoClose、start、end
fs.createWriteStream(path[,options]):以流的形式写入文件,options的值同createWriteStream中的options

var readerStream = fs.createReadStream('test.txt');
var writeStream = fs.createWriteStream('test1.txt');
readerStream.pipe(writeStream).on('error',function(err){
    if(err){
        console.log(err);
    }
    }).on('finish',function(){
    //完成操作
    });

fs检查文件是否存在的方法

fs.stat(path,callback)

该方法用于查询文件信息,其回调函数有两个参数(err, stats)。stats是一个fs.Stats对象,该对象中包含一个stats.isFile()方法。如果stats对象存在且stats.isFile()为true,才能确认要修改或删除的文件存在

fs.stat('test.txt',function(err,stat){
    if(stat && stat.isFile()){
        console.log("文件存在");
    }else{
        console.log('文件不存在或不是标准文件');
    }
})

fs.access(path[,mode],callback)

该方法用于检查到指定path路径的目录或文件的访问权限,其回调函数中有一个参数(Err), 如果检查失败则会出现错误参数的响应。mode为要检查的权限掩码,它可以是以下的值

fs.F_OK - 文件是对于进程是否可见,可以用来检查文件是否存在。也是mode 的默认值
fs.R_OK - 文件对于进程是否可读
fs.W_OK - 文件对于进程是否可写
fs.X_OK - 文件对于进程是否可执行。(Windows系统不可用,执行效果等同fs.F_OK)

使用fs.acess()方法检查文件是否存在,可以使用以下方法

fs.access('test4.txt',function(err){
    console.log(err?'文件不存在':'文件存在');
})

使用fs.access方法检查对文件时候有读写权限,可以使用如下方法:

fs.access("test.txt",fs.R_OK | fs.W_OK,function(err){
    console.log(err?'不可读写':'可读写');
});

监测文件变动

fs.watch(filename [,options] [,listener])可以监测文件的变动情况
fliename为需要监听的文件夹或文件名的路径
options为string或object。可能包含的值为persistent(布尔值,表明当文件监听变化后,是否继续监听,默认值为true)、recursive(布尔值,表明子文件夹是否被监听,默认值为false)、encoding(字符串类型,表明监听文件名的字符编码,默认为‘utf8’

fs.watch('test.txt',function(event,filename){
    console.log(event);
    console.log(filename);
})

当test.txt文件发生变化时,回调函数执行,输出event(change)和filename(test.txt)

fs.watchFile(file[,options],listener)
监听filename的变化,当该文件发生变化时,执行回调函数
这里options的包括:persistent(布尔值)和interval(多少毫秒轮询filename的状态,options的默认值为{persistent: true,interval:5007}

listenter中包含两个arguments,表明文件的当前状态和以前的状态

fs.watchFile('test.txt',function(curr,prev){
    console.log(curr);
    console.log(prev)
})

二者主要用来监听文件变动.fs.watch利用操作系统原生机制来监听,可能不适用网络文件系统; fs.watchFile则是定期检查文件状态变更,适用于网络文件系统,但是相比fs.watch有些慢,因为不是实时机制.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Node.js学习笔记4【核心模块--fs】

文件系统fs fs模块是文件操作的封装,它提供了文件读取、写入、更名、删除、遍历目录、链接等POSIX文件系统操作。与其它模块不同的是,fs模块中所有的操作都提供了异步的和同步的两个版本。   ...

Node.js 中 fs 模块使用样例

Node.js 中 fs 模块使用样例 使用Node.js编程中难免用的其fs模块的API,如读、写文件操作等。fs模块所有的API都有异步和同步的形式。同步和异步函数接口的应用环境不同,例如,使用...

nodejs 的fs 的所有用法

node.js之fs模块

Node.js 中fs.access() 判断文件和目录是否存在;

var fs = require("fs"); /* -----判断文件和目录是否存在; fs.access(path[, mode], callback); path:判断的文件名; ca...

NodeJS学习笔记之FS文件模块

一,开篇分析 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以通过调用 require("fs") 来获取该模块。文件系统模块中的所有方法均有异步和同步版本。 ...

Node.js fs 模块

一、同步和异步 使用require('fs')载入fs模块,模块中所有方法都有同步和异步两种形式。 异步方法中回调函数的第一个参数总是留给异常参数(exception),如果方法成功完成,...
  • xy2204
  • xy2204
  • 2015年07月21日 16:18
  • 1074

Node.Js fs模块文件夹操作

1.fs.readdir(path, callback); 使用fs.readdir读取目录,重点其回调函数中files对象 /**  * path, 要读取目录的完整路径及目录名;  * [cal...

NodeJs模块实例02_buffer、fs和fsdir

1.buffer模块实例 /* * * buffer:缓存器区,暂时存放在内存里的一段数据 * 由一个八位字节一个元素组成的数组,单位用16进制表示,取值范围0-255* * */   //创建buf...

node.js中fs.createWriteStream详解

代码:   fs.createWriteStream(path,[options]); path | options | flags defaultEncoding fd ...

nodejs 文件复制 fs.createReadSream&fs.createWriteStream&pipe

文件结构: demo.js var fs=require('fs'); var rOption={ flags:"r", encoding:null, mode:0666 } var w...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nodejs中的fs模块
举报原因:
原因补充:

(最多只允许输入30个字)