`

node模块之fs

阅读更多

fs模块是文件操作的封装,它提供了文件的读取,写入,更名,删除,遍历目录,链接等文件系统操作

与其他模块不同的是,fs模块中所有的操作都提供了异步的和同步的两个版本,

例如读取文件内容的函数有①异步的fs.readFile()和②同步的fs.readFileSync()

具体详解:

①异步fs.readFile(filename,[encoding],[callback(err,data)])-----读取文件的函数

必选参数 filename,表示要读取的文件名

encoding可选参数,表示文件的字符编码

callback 是回调函数,用于接收文件的内容

回调函数提供两个参数err和data,err表示有没有错误发生,data是文件内容。

如果指定了encoding,data是一个解析后的字符串,否则data将会是以Buffer形式表示的二进制数据

也就是说,不指定编码方式就默认使用二进制的方式进行读取数据

 

②同步fs.readFileSync(filename, [encoding])-----读取文件的函数

参数和fs.readFile相同,而读取到的文件内容会以函数返回值的形式返回

如果有错误发生,fs将会抛出异常,需要使用try和catch捕捉并处理异常

 

读取目录:异步fs.readdir(path,[callback(err,files)])

         同步fs.readdirSync(path)

创建目录:异步fs.mkdir(path,[mode],[callback(err)])

         同步fs.mkdirSync(path,[mode])

删除目录:异步fs.rmdir(path,[callback(err)])

         同步fs.rmdirSync(path)

删除文件:异步fs.unlink(path,[callback(err)])

          同步fs.unlinkSync(path)

修改文件时间戳:异步fs.utimes(path,atime,mtime,[callback(err)])

          同步fs.utimesSync(path,atime,mtime)

获取文件信息:异步fs.stat(path,[callback(err,stats)])

          同步fs.statSync(path)

写入文件内容:异步fs.writeFile(filename,[encoding],[callback(err,data)])

          同步fs.writeFile(filename,[encoding])

读取文件内容:异步fs.readFile(filename,[encoding],[callback(err,data)])

          同步fs.readFileSync(filename,[encoding],[callback(err,data)]

 

详解:①readFile(),readFileSync()读取文件

readFile方法用于异步读取数据,readFile方法的第一个参数是文件的路径.第二个参数是读取完成后的回调函数,该函数的第一个参数是发生错误时的错误对象,第二个参数是代表文件内容的Buffer实例

例子:

fs.readFile('./image.png', function (err, buffer) {
        if (err) throw err;    //发生错误时的错误对象
        process(buffer);       //文件内容的Buffer实例
      });

 readFileSync方法用于同步读取文件,返回一个字符串.第一个参数是文件路径,第二个参数可以是一个表示配置的对象,也可以是一个表示文本文件编码的字符串

 

②writeFile(),writeFileSync()写入文件

writeFile方法异步写入文件,第一个参数是写入的文件名,第二个参数是写入的字符串,第三个参数是回调函数.回调函数前面,还可以再加一个参数,表示写入字符串的编码(默认是utf8)

writeFileSync方法用于同步写入文件,第一个参数是文件路径,第二个参数是写入文件的字符串,第三个参数是文件编码,默认为utf8

 

③exists(path, callback)判断文件存在与否

exists方法用来判断给定路径是否存在,然后不管结果如何,都会调用回调函数

下面的例子是如果给定目录存在,就删除它

if (fs.existsSync(outputFolder)) {
  console.log('Removing ' + outputFolder);
  fs.rmdirSync(outputFolder);
}

 

④mkdir(),writeFile(),readFile()

mkdir方法用于新建目录,接受三个参数,第一个是目录名,第二个是权限值,第三个是回调函数

var fs = require('fs');
fs.mkdir('./helloDir',0777, function (err) {
  if (err) throw err;
});

 

writeFile方法用于写入文件

readFile方法用于读取文件内容(注释:第一个参数是文件名,第二个参数是文件编码,第三个参数是回调函数。可用的文件编码包括“ascii”、“utf8”和“base64”。如果没有指定文件编码,返回的是原始的缓存二进制数据,这时需要调用buffer对象的toString方法,将其转为字符串)

 

⑤mkdirSync(),writeFileSync(),readFileSync()

同步建立目录、写入文件、读取文件

对于流量较大的服务器,最好还是采用异步操作,因为同步操作时,只有前一个操作结束,才会开始后一个操作,如果某个操作特别耗时(常常发生在读写数据时),会导致整个程序停顿

 

⑥readdir(),readdirSync()读取目录

读取目录,返回一个所包含的文件和子目录的数组

 

⑦stat方法:判断文件类型目录/文件

参数是一个文件或目录,它产生一个对象,该对象包含了该文件或目录的具体信息。我们往往通过该方法,判断正在处理的到底是一个文件,还是一个目录

var fs = require('fs');
fs.readdir('/etc/', function (err, files) {
  if (err) throw err;
  files.forEach( function (file) {
    fs.stat('/etc/' + file, function (err, stats) {
      if (err) throw err;

      if (stats.isFile()) {
        console.log("%s is file", file);
      }
      else if (stats.isDirectory ()) {
      console.log("%s is a directory", file);
      }
    console.log('stats:  %s',JSON.stringify(stats));
    });
  });
});

 

⑧watchfile方法监听一个文件,如果该文件发生变化,就会自动触发回调函数

unwatchfile方法用于解除对文件的监听

 

⑨createReadStream方法往往用于打开大型的文本文件,创建一个读取操作的数据流。所谓大型文本文件,指的是文本文件的体积很大,读取操作的缓存装不下,只能分成几次发送,每次发送会触发一个data事件,发送结束会触发end事件

 

⑩createWriteStream方法创建一个写入数据流对象,该对象的write方法用于写入数据,end方法用于结束写入操作

createWriteStream方法创建一个写入数据流对象,该对象的write方法用于写入数据,end方法用于结束写入操作

分享到:
评论

相关推荐

    node.fs模块的使用

    nodejs的关于fs模块的编写,引入fs模块,修改文件内容。

    Node核心模块之fs模块01

    Node 导入文件系统模块fs全称File System,专门用来操作系统中的文件,常用的操作方式是对文件的读取和写入。 Node.js 文件系统(fs 模块)模块中的方法分成两类,一类是同步,另一类是异步,例如读取文件内容的...

    Node.js fs模块原理及常见用途

    JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。 fs 模块提供了非常多的接口,这里主要说一下一些...

    node常用内置模块

    这是node常用的内置对象的笔记 http url fs querystring stream path

    Node.js学习之内置模块fs用法示例

    主要介绍了Node.js学习之内置模块fs用法,结合实例形式详细分析了node.js内置模块fs的基本功能、用法与相关操作注意事项,需要的朋友可以参考下

    chrome-fs:在Chrome应用中使用Node`fs` API

    在Chrome应用中使用Node fs API 使用该模块 用法 该库可直接与针对Chrome打包应用的浏览器版本一起使用。 $ npm install chrome-fs --save $ browserify -r chrome-fs:fs index.js -o bundle.js API状态 该列表...

    fsMethods:Node.js fs模块常用功能的封装

    fsMethods Node.js fs模块常用功能的封装

    Node.js的核心API 引入fs模块 index.js

    Node.js核心API

    fstk:fstk 是一个 Node.js 模块,用于使用各种实用方法扩展 Node 的 FS 模块

    fstk 是一个模块,用于使用各种实用方法扩展 Node 的 FS 模块,而不依赖于子进程(即 bash)。 入门 安装模块: npm install fstk var fstk = require ( 'fstk' ) ; 方法 所有方法都接受可选的选项对象和回调作为...

    node.js基于fs模块对系统文件及目录进行读写操作的方法详解

    本文实例讲述了node.js基于fs模块对系统文件及目录进行读写操作的方法。分享给大家供大家参考,具体如下: 如果要用这个模块,首先需要引入,fs已经属于node.js自带的模块,所以直接引入即可 var fs = require('fs'...

    前端使用 node fs模块实现文件断点续传 (下载续传)

    前端直接引用nodejs fs 模块 实现文件下载续传、并没有想象中的那么难...

    fs模块-相关学习文档

    fs 模块是 Node.js 中的内置模块,称之为文件系统,提供了对计算机中的磁盘进行操作的功能。本章节将介绍 fs 模块的六个主要操作:文件写入、文件读取、文件移动与重命名、文件删除、文件夹操作和查看资源状态。 一...

    Node.js入门教程.pdf

    我们将学习如何使用 Http 模块和 Fs 模块来提供静态文件,并学习如何使用模板引擎来渲染模板文件。 Lesson 5: Node 中的 stream Stream 是 Node.js 中的一个核心概念,用于处理大型数据流。Stream 提供了异步 I/O...

    前端开源库-i18next-node-fs-backend

    前端开源库-i18next-node-fs-backendi18下一个节点fs backend,node.js backend layer for i18下一个使用fs模块从文件系统加载资源

    node.js中fs文件系统模块的使用方法实例详解

    本文实例讲述了node.js中fs文件系统模块的使用方法。分享给大家供大家参考,具体如下: node.js中为我们提供了fs文件系统模块,实现对文件或目录的创建,修改和删除等操作。 fs模块中,所有的方法分为同步和异步两种...

    Node.js中文件系统fs模块的使用及常用接口

    JavaScript 的是没有操作文件的能力,但是 Node 是可以做到的,Node 提供了操作文件系统模块,是 Node 中使用非常重要和高频的模块,是绝对要掌握的一个模块系统。 fs 模块提供了非常多的接口,这里主要说一下一些...

    Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法

    fs模块.js: /* 1. fs.stat 检测是文件还是目录(目录 文件是否存在) 2. fs.mkdir 创建目录 (创建之前先判断是否存在) 3. fs.writeFile 写入文件... //fs是node.js的核心模块,不用下载安装,可以直接引入 //1. f

    node-fs:Node的fs模块的精简包装

    Node的fs模块的瘦包装器 该模块的目的是为文件系统相关功能提供统一的命名,并使所有功能都返回承诺。 安装 npm i vbarbarosh/node-fs

    co-fs, nodejs核心fs模块 thunk"co".zip

    co-fs, nodejs核心fs模块 thunk"co" node 核心 fs 包装函数,返回 co的thunk 。安装$ npm install co-fs示例使用所有常规的非同步fs函数,无回调地狱:var json = yield fs.readFile('

Global site tag (gtag.js) - Google Analytics