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调用fs.renameSync报错的问题(Error: EXDEV, cross-device link not permitted)

在写一个文件上传的功能时候,调用fs.renameSync方法错误 出错 代码所在如下: 1 function upload(response,request){ 2 consol...

Node.js fs 模块

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

精选:深入理解 Docker 内部原理及网络配置

网络绝对是任何系统的核心,对于容器而言也是如此。Docker 作为目前最火的轻量级容器技术,有很多令人称道的功能,如 Docker 的镜像管理。然而,Docker的网络一直以来都比较薄弱,所以我们有必要深入了解Docker的网络知识,以满足更高的网络需求。

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

异步删除文件:unlink:分开、解开、拆开const fs = require('fs'); fs.unlink('./example.js', (err) => { if (err) thro...

NodeJS学习笔记之FS文件模块

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

nodejs 的fs 的所有用法

node.js之fs模块

nodejs fs模块

nodejs FileSystem 模块 1、读文件 2、写文件 3、目录操作 4、监听 5、流操作

nodejs中的fs模块

fs模块为nodejs的核心模块之一,主要处理文件的读写、复制、s删除、重命名等操作。当需要使用该模块时,需要先导入该文件var fs = require('fs'); nodejs文件系统中的方法均...

nodejs学习之--fs模块

1、 node fs模块

nodejs开发——fs模块

nodejs中一个非常重要的系统模块就是fs(file system)模块,也就是文件系统,主要作用就是对文件的写入与读取。由于node默认是单线程的,所以我们一般使用异步任务来进行文件输入输出。虽然...

NodeJS基础(二)——fs文件模块

一、Buffer缓存区在电脑中,所有的数据都是以二进制的形式存储的,而JavaScript语言本身是没有二进制数据类型的,而Node作为服务端需要处理像TCP网络流和文件流时的数据,就必须得使用二进制...
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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