`

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常用内置模块

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

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

    Node.js的fs模块是核心模块之一,它允许开发者在Node.js环境中进行文件系统操作。由于JavaScript在浏览器环境里不直接支持文件系统访问,但Node.js作为一个服务器端运行时,提供了fs模块来弥补这一不足,使得开发者...

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

    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状态 该列表...

    graceful-fs-fs模块的一个替代拥有各种改进

    优雅的fs(graceful-fs)是Node.js生态系统中一个重要的模块,它作为原生fs模块的一个增强版本,提供了一系列的改进和优化,旨在提高文件系统的操作性能和稳定性。在Node.js开发过程中,文件系统操作是不可或缺的一...

    使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解

    在Node.js中,fs(file system)模块是用于进行文件和目录操作的核心模块。这个模块提供了丰富的API,允许开发者执行诸如读取、写入、删除、追加等操作。下面我们将详细探讨fs模块的使用方法。 首先,导入fs模块...

    Node.js-textract从各种文件抽取文本的Node.js模块

    例如,你可以结合`fs`模块读取文件,或者使用`axios`或`request`库下载远程文件,然后再用textract提取文本。这使得textract成为构建复杂文件处理工作流的一个强大组件。 总的来说,Node.js-textract是Node.js开发...

    06 利用HTTP模块 URl模块 Path模块 Fs模块创建一个静态WEB服务器 1

    HTTP 模块是 Node.js 提供的核心模块之一,用于处理 HTTP 协议。在我们的例子中,我们引入这个模块并使用 `http.createServer()` 创建服务器。`createServer()` 接受一个回调函数,该函数处理每个传入的请求...

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

    Node.js核心API

    Node.js-ssh2-一个SSH2客户端和服务器node.js模块

    **Node.js SSH2 模块详解** 在 IT 领域,Node.js 是一个非常流行的 JavaScript 运行环境,它允许开发者使用 JavaScript 进行后端开发。在 Node.js 的生态系统中,`ssh2` 是一个强大的库,它提供了一个SSH2协议的...

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

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

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

    在Node.js环境中,fs(文件系统)模块是核心模块之一,用于进行文件和目录操作。`fsMethods`项目是对fs模块常用功能的封装,旨在提供更简洁、易用的接口,便于开发者处理文件系统任务。以下将详细介绍`fsMethods`...

    fs-extra-Node.js为fs对象添加额外的方法如copy()remove()mkdirs()

    在Node.js的开发中,标准的`fs`模块提供了丰富的文件系统操作接口,然而在实际应用中,开发者有时会需要更加强大和便捷的功能,比如文件的复制、删除以及递归创建目录等。这时,`fs-extra`库就显得尤为重要,它在`fs...

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

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

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

    在Node.js环境中,`fs`模块是用于与文件系统交互的核心模块,提供了各种读写文件、目录操作等方法。然而,原始的`fs`模块使用回调函数,这在处理异步操作时可能会导致回调地狱的问题。为了改善这种状况,`node-fs`...

    Node.js入门教程.pdf

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

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

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

Global site tag (gtag.js) - Google Analytics