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有些慢,因为不是实时机制.

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

nodejs 中读取文件状态;fs.stat()方法;

var fs = require("fs"); /*     读取文件的状态;     fs.stat(path,callback);     callback有两个参数;err,stats;...
  • sunlizhen
  • sunlizhen
  • 2017年09月18日 10:11
  • 643

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

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

Node.js 中 fs 模块使用样例

Node.js 中 fs 模块使用样例 使用Node.js编程中难免用的其fs模块的API,如读、写文件操作等。fs模块所有的API都有异步和同步的形式。同步和异步函数接口的应用环境不同,例如,使用...
  • cocoonyang
  • cocoonyang
  • 2016年09月12日 10:47
  • 1399

Node.Js fs模块文件操作(三)

三、Node.Js 文件或目录监视 1.fs.watchFile(filename, [options], listener); 对文件进行监视,并且在监视到文件被修改时执行处理 /** ...
  • u011127019
  • u011127019
  • 2016年08月28日 16:43
  • 1774

node.js fs,http 模块用法

1 error: 2 EventEmitter定义了一个特殊的时间error,它包含了‘错误’的语义,当error被发射时,EventEmitter规定如果没有 3 响应的监听...
  • luo200618
  • luo200618
  • 2016年08月10日 14:44
  • 887

Node.js 文件模块(fs)模块介绍

文件的I/O是由标准的POSIX函数封装二成的。需要使用require(‘fs’)访问这个模块。 所有的方法都提供了异步和同步两种方式。 1、fs.rename(path1, path2, [ca...
  • u014695532
  • u014695532
  • 2016年04月16日 20:38
  • 1944

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

var fs = require("fs"); /* -----判断文件和目录是否存在; fs.access(path[, mode], callback); path:判断的文件名; ca...
  • sunlizhen
  • sunlizhen
  • 2017年09月18日 10:07
  • 1026

一步一步学习Node的File System文件系统

异步删除文件:unlink:分开、解开、拆开const fs = require('fs'); fs.unlink('./example.js', (err) => { if (err) thro...
  • itpinpai
  • itpinpai
  • 2016年09月02日 11:24
  • 1395

Node.Js fs模块文件操作(一)

一、字符串操作文件 1.fs.writeFile(filename,data,[options],callback); 创建并写入文件 /**  * filename, 必选参数,文件名  *...
  • u011127019
  • u011127019
  • 2016年08月28日 15:33
  • 2640

NodeJS学习笔记之FS文件模块

一,开篇分析 文件系统模块是一个简单包装的标准 POSIX 文件 I/O 操作方法集。可以通过调用 require("fs") 来获取该模块。文件系统模块中的所有方法均有异步和同步版本。 ...
  • z69183787
  • z69183787
  • 2016年05月09日 17:24
  • 1115
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:nodejs中的fs模块
举报原因:
原因补充:

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