nodejs文件操作模块FS(File System)常用函数简明总结
使用nodeJS中的fs模块对文件及目录进行读写,删除,追加,等操作详解

使⽤nodeJS中的fs模块对⽂件及⽬录进⾏读写,删除,追加,等操作详解fs概述⽂件 I/O 是由简单封装的标准 POSIX 函数提供的。
nodeJS中通过 require('fs') 使⽤fs模块。
所有的⽅法都有异步和同步的形式。
异步形式始终以完成回调作为它最后⼀个参数。
传给完成回调的参数取决于具体⽅法,但第⼀个参数总是留给异常。
如果操作成功完成,则第⼀个参数会是 null 或 undefined//异步⽰例var fs = require('fs');fs.unlink('/tmp/hello', function(err){if (err) throw err;console.log('successfully deleted /tmp/hello');});当使⽤同步形式时,任何异常都会被⽴即抛出。
可以使⽤ try/catch 来处理异常,或让它们往上冒泡//同步⽰例var fs = require('fs');fs.unlinkSync('/tmp/hello');console.log('successfully deleted /tmp/hello');异步⽅法不保证执⾏顺序。
所以下⾯的例⼦容易出错fs.rename('/tmp/hello', '/tmp/world', function(err){if (err) throw err;console.log('renamed complete');});fs.stat('/tmp/world', function(err, stats){if (err) throw err;console.log('stats: ${JSON.stringify(stats)}');});fs.stat 可能在 fs.rename 之前执⾏。
node.js知识点总结

node.js知识点总结Node.js是一个基于Chrome V8引擎的JavaScript运行时环境,它让JavaScript可以脱离浏览器运行在服务器端。
以下是Node.js的一些基本知识点总结:1. **基础知识**- **事件循环(Event Loop)**:Node.js使用非阻塞I/O操作,通过事件循环机制来处理任务。
-**异步编程(Asynchronous Programming)**:利用回调函数(Callbacks)、Promises和async/await来处理非阻塞操作。
- **无阻塞I/O(Non-blocking I/O)**:Node.js的I/O操作默认是无阻塞的,可以提高性能,特别是在处理大量并发请求时。
2. **核心模块**- **fs(文件系统模块)**:提供文件和目录操作的功能,如创建、读取、写入和删除。
- **http(HTTP模块)**:用于创建HTTP服务器和客户端,进行网络通信。
- **path(路径模块)**:处理文件路径相关功能。
- **process(进程模块)**:提供与Node.js运行进程相关的信息和方法。
-**buffer(缓冲区模块)**:提供处理内存中的缓冲区的功能,用于处理二进制数据。
3. **外部模块和包管理**- **npm(Node Package Manager)**:Node.js默认的包管理工具,用于安装和管理外部模块。
-**CommonJS模块**:一种模块系统,用于在Node.js中组织代码。
- **npm仓库**:一个注册表,提供了大量的Node.js模块供开发者使用。
4. **高级话题**-**构建工具(如Webpack、Gulp)**:用于优化、打包和转换Node.js应用程序的工具。
-**单元测试(如Mocha、Jest)**:用于测试Node.js应用程序的框架。
- **框架使用(如Express.js、Koa.js)**:这些框架提供了更高级的API,简化了HTTP服务器的创建和Web应用的开发。
nodejs fs模块方法

nodejs fs模块方法Node.js的File System(FS)模块是一个用于文件系统操作的强大工具。
它提供了许多方法,允许开发者读取、写入、创建、删除文件,以及执行其他与文件系统相关的任务。
本篇文章将详细介绍FS模块的主要方法。
一、fs.readFile(filename, [options], [callback])这个方法用于读取文件的内容。
它接受两个参数:文件名和选项对象。
回调函数会在文件读取完成后被调用,并传递一个包含文件内容的字符串和一个包含了错误信息的可选参数。
二、fs.readFileSync(filename, [options])这个同步版本的方法与fs.readFile类似,但在阻塞模式下执行,不会在文件读取完成后调用回调函数。
它会直接返回文件的内容和错误信息。
三、fs.writeFile(filename, data[, options], callback)这个方法用于将数据写入文件。
它接受三个参数:文件名、要写入的数据和选项对象。
回调函数会在文件写入完成后被调用。
四、fs.writeFileSync(filename, data[, options])这个同步版本的方法与fs.writeFile相似,但它会在阻塞模式下执行,不会在文件写入完成后调用回调函数。
它会直接将数据写入文件。
五、fs.appendFile(filename, data[, options], callback)这个方法用于向文件追加数据。
它接受四个参数:文件名、要追加的数据、选项对象和回调函数。
当数据被追加到文件后,回调函数会被调用。
六、fs.appendFileSync(filename, data[, options])这个同步版本的方法与fs.appendFile相似,但它会在阻塞模式下执行,不会在数据被追加到文件后调用回调函数。
它会直接将数据追加到文件中。
七、fs.chmod(filename, mode[, callback])这个方法用于更改文件或目录的权限。
node--文件系统fs

文件系统fsfs 模块是文件操作的封装,它提供了文件的读取、写入、更名、删除、遍历目录、链接等POSIX 文件系统操作。
与其他模块不同的是,fs 模块中所有的操作都提供了异步的和同步的两个版本,例如读取文件内容的函数有异步的fs.readFile() 和同步的fs.readFileSync()。
1、fs.readFilefs.readFile(filename,[encoding],[callback(err,data)])是最简单的读取文件的函数。
它接受一个必选参数filename,表示要读取的文件名。
第二个参数encoding是可选的,表示文件的字符编码。
callback 是回调函数,用于接收文件的内容。
如果不指定encoding,则callback 就是第二个参数。
回调函数提供两个参数err 和data,err 表示有没有错误发生,data 是文件内容。
如果指定了encoding,data 是一个解析后的字符串,否则data 将会是以Buffer 形式表示的二进制数据。
不指定编码方式就默认使用二进制的方式进行读取数据。
var fs = require('fs');fs.readFile('content.txt', function(err, data) {if (err) {console.error(err);} else {console.log(data);}});2、fs.readFileSyncfs.readFileSync(filename, [encoding])是fs.readFile 同步的版本。
它接受的参数和fs.readFile 相同,而读取到的文件内容会以函数返回值的形式返回。
如果有错误发生,fs 将会抛出异常,你需要使用 try 和catch 捕捉并处理异常。
3、fs.openfs.open(path, flags, [mode], [callback(err, fd)])是POSIX open 函数的封装,与C 语言标准库中的fopen 函数类似。
node.js中fs模块常用方法

node.js中fs模块常用方法
在Node.js中,fs模块是用于与文件系统进行交互的模块,它提供了许多常用的方法来进行文件的读取、写入、删除等操作。
以下是fs模块中常用的一些方法:
1. fs.readFile(): 用于异步读取文件的内容。
2. fs.readFileSync(): 用于同步读取文件的内容。
3. fs.writeFile(): 用于异步写入文件的内容。
4. fs.writeFileSync(): 用于同步写入文件的内容。
5. fs.appendFile(): 用于异步追加文件的内容。
6. fs.unlink(): 用于删除文件。
7. fs.rename(): 用于重命名文件或者移动文件位置。
8. fs.stat(): 用于获取文件的状态信息,比如文件大小、创
建时间等。
9. fs.mkdir(): 用于创建目录。
10. fs.readdir(): 用于读取目录的内容。
这些方法可以帮助开发人员在Node.js中进行文件操作,从而实现对文件系统的管理和控制。
需要根据具体的需求选择合适的方法来进行文件操作,同时注意处理可能出现的错误和异常情况,以确保文件操作的安全和可靠性。
同时,也可以结合其他模块如path 模块来进行文件路径的处理。
总的来说,fs模块提供了丰富的方法来满足开发者对文件系统操作的需求。
Node.js文件系统、路径的操作详解

Node.js⽂件系统、路径的操作详解Node.js⽂件系统、路径的操作函数⽬录将Node.js的⽂件系统、⽂件流及路径操作API详细的学习了⼀下,代码都是测试过的,也许很简单,但为了打好基础,还是要有点⼀丝不苟的精神,从中我也更深⼊理解异步回调事件机制,希望对你有⽤……//公共引⽤1.var fs = require('fs'),2. path = require('path');1、读取⽂件readFile函数//readFile(filename,[options],callback);/*** filename, 必选参数,⽂件名* [options],可选参数,可指定flag(⽂件操作选项,如r+ 读写;w+ 读写,⽂件不存在则创建)及encoding属性* callback 读取⽂件后的回调函数,参数默认第⼀个err,第⼆个data 数据*/1.fs.readFile(__dirname + '/test.txt', {flag: 'r+', encoding: 'utf8'}, function (err, data) {2.if(err) {3. console.error(err);4.return;5. }6. console.log(data);7.});2、写⽂件// fs.writeFile(filename,data,[options],callback);var w_data = '这是⼀段通过fs.writeFile函数写⼊的内容;\r\n';var w_data = new Buffer(w_data);/*** filename, 必选参数,⽂件名* data, 写⼊的数据,可以字符或⼀个Buffer对象* [options],flag,mode(权限),encoding* callback 读取⽂件后的回调函数,参数默认第⼀个err,第⼆个data 数据*/1.fs.writeFile(__dirname + '/test.txt', w_data, {flag: 'a'}, function (err) {2.if(err) {3. console.error(err);4. } else {5. console.log('写⼊成功');6. }7.});3、以追加⽅式写⽂件// fs.appendFile(filename,data,[options],callback);1.fs.appendFile(__dirname + '/test.txt', '使⽤fs.appendFile追加⽂件内容', function () {2. console.log('追加内容完成');3.});4、打开⽂件// fs.open(filename, flags, [mode], callback);/*** filename, 必选参数,⽂件名* flags, 操作标识,如"r",读⽅式打开* [mode],权限,如777,表⽰任何⽤户读写可执⾏* callback 打开⽂件后回调函数,参数默认第⼀个err,第⼆个fd为⼀个整数,表⽰打开⽂件返回的⽂件描述符,window中⼜称⽂件句柄*/1.fs.open(__dirname + '/test.txt', 'r', '0666', function (err, fd) {2. console.log(fd);3.});5、读⽂件,读取打开的⽂件内容到缓冲区中;// fs.read(fd, buffer, offset, length, position, callback);/*** fd, 使⽤fs.open打开成功后返回的⽂件描述符* buffer, ⼀个Buffer对象,v8引擎分配的⼀段内存* offset, 整数,向缓存区中写⼊时的初始位置,以字节为单位* length, 整数,读取⽂件的长度* position, 整数,读取⽂件初始位置;⽂件⼤⼩以字节为单位* callback(err, bytesRead, buffer), 读取执⾏完成后回调函数,bytesRead实际读取字节数,被读取的缓存区对象*/1.fs.open(__dirname + '/test.txt', 'r', function (err, fd) {2.if(err) {3. console.error(err);4.return;5. } else {6.var buffer = new Buffer(255);7. console.log(buffer.length);8.//每⼀个汉字utf8编码是3个字节,英⽂是1个字节9. fs.read(fd, buffer, 0, 9, 3, function (err, bytesRead, buffer) {10.if(err) {11.throw err;12. } else {13. console.log(bytesRead);14. console.log(buffer.slice(0, bytesRead).toString());15.//读取完后,再使⽤fd读取时,基点是基于上次读取位置计算;16. fs.read(fd, buffer, 0, 9, null, function (err, bytesRead, buffer) {17. console.log(bytesRead);18. console.log(buffer.slice(0, bytesRead).toString());19. });20. }21. });22. }23.});6、写⽂件,将缓冲区内数据写⼊使⽤fs.open打开的⽂件//fs.write(fd, buffer, offset, length, position, callback);/*** fd, 使⽤fs.open打开成功后返回的⽂件描述符* buffer, ⼀个Buffer对象,v8引擎分配的⼀段内存* offset, 整数,从缓存区中读取时的初始位置,以字节为单位* length, 整数,从缓存区中读取数据的字节数* position, 整数,写⼊⽂件初始位置;* callback(err, written, buffer), 写⼊操作执⾏完成后回调函数,written实际写⼊字节数,buffer被读取的缓存区对象*/1.fs.open(__dirname + '/test.txt', 'a', function (err, fd) {2.if(err) {3. console.error(err);4.return;5. } else {6.var buffer = new Buffer('写⼊⽂件数据内容');7.//写⼊'⼊⽂件'三个字8. fs.write(fd, buffer, 3, 9, 12, function (err, written, buffer) {9.if(err) {10. console.log('写⼊⽂件失败');11. console.error(err);12.return;13. } else {14. console.log(buffer.toString());15. fs.write(fd, buffer, 12, 9, null, function (err, written, buffer) {16. console.log(buffer.toString());17. })18. }19. });20. }21.});7、刷新缓存区;// 使⽤fs.write写⼊⽂件时,操作系统是将数据读到内存,再把数据写⼊到⽂件中,当数据读完时并不代表数据已经写完,因为有⼀部分还可能在内在缓冲区内。
Node.js中的文件系统-fs模块

Node.js中的文件系统-fs模块在任何的系统中,与文件的交互都是非常重要的,特别是当配置参数写在一个文件中时,对文件系统的操作是必不可少的。
在Node.js中同样也有专用的模块fs来处理与文件系统的交互。
fs模块中,提供了与文件系统进行交互的良好的接口。
就可以方便的对文件进行打开、读取、写人等操作。
同步与异步使用文件系统的差异Node.js中的fs模块几乎所有的功能都会有两种形式可供选择:异步和同步。
如读取文件的同步形式为readFileSync(path,[option],callback)和异步模式readFile(path,[option])。
所以在编写代码时,理解这两种形式的不同是非常重要的。
同步方式的文件系统调用会导致阻塞,由于Node.js是单线程的,直到文件调用完成后,控制权才会被放回主线程,这也就导致了后台其他线程池中的很多线程不能够执行,从而导致Node.js中一定程度的性能问题。
因此应该尽可能的减少使用同步方式的文件系统的方法调用。
异步调用会被主线程放置在事件队列中以备随后运行,这使得调用能够融入Node.js中的事件模型。
但在执行代码时,就会变得有点棘手,因为事件并不能在预期的时候完成,这就需要有一个callback函数来规定当调用完成时需要完成的事。
(这里可以去深入了解下Node.js的事件队列)当然在大多数情况下,同步和异步文件系统调用的底层功能是一样的,只是实现的方式有区别。
同步和异步文件系统调用都接受相同的参数,但是异步的方式都需要有一个额外的参数,即在调用完成时需要执行的回调函数。
总结一下:同步调用立刻执行,当执行完成后才会返回主线程进行对时间队列中事件的调用,而异步则是将该事件放入到事件队列中,实际的调用则是发生在它被事件循环提取时。
打开/关闭文件一旦文件被打开,就可以读取文件中的内容或是往文件中写入文件,可以通过一个特定参数来设置。
主要的方法为:fs.open(path,flags,[mode],callback);fs.openSync(path,flags,[mode]);参数列表:path:用于指定文件系统的标准路径字符串。
Node.js中的fs模块

Node.js中的fs模块// file system 是node的⽂件处理模块const fs = require('fs')const path = require('path')// 1. readFile 此函数⽤来异步读取⽂件,并在回调中可以获取读取⽂件结果// 这个⽅法会将⼀个⽂件的全部内容都读到内存中,适合于体积⼩的⽂本,如果⽂件有数百MB⼤⼩,则建议使⽤stream let filePath = path.join(__dirname, 'test.txt')fs.readFile(filePath, 'utf8', ( error, data) => {console.log('readFile:', error, data)})// 1.1 readFileSync 是readFile 的同步版本可以直接返回读取结果const data1 = fs.readFileSync(filePath, 'utf8')// const data1 = fs.readFileSync(filePath, {encoding:'UTF-8'} )console.log('readFileSync:', data1)// 2. writeFile 写⼊⽂件,第⼀参数为⽂件名,如果不存在则会尝试创建它let writePath = path.join(__dirname, 'test1.txt')let data2 = '这是⼀个写⼊的数据'// fs.writeFile(writePath, data2 , 'utf8', ( res ) => {// console.log('writeFile:', res)// })let writePath1 = path.join(__dirname, 'test2.txt')// 2.1 writeFileSync 写⼊⽂件,writeFile 的同步版本// const data3 = fs.writeFileSync( writePath1, data2, 'utf8')// console.log('writeFileSync:', data3)// 3. stat(path, callback) ⽤来获取⽂件的状态,通常在调⽤open(),read() 等⽅法之前,⽤fs.stat⽅法// 判断该⽂件是否存在,如果存在就会返回⽂件状态信息fs.stat(filePath, (error, result) => {// console.log(result)})// 3.1 同步版本const data4 = fs.statSync(filePath)// 4. readdir(path, function(error, result)) 读取⽬录下⽂件及⽬录fs.readdir(__dirname, (error, result) => {console.log('readdir:', error,result)// [ 'buffer.js', 'fs.js', 'test.txt' ]})// 4.1 获取⽬录下所有⼦⽂件function getDirFile(dirPath){fs.readdir(dirPath, (error, result) =>{console.log('result',result)for (let item of result) {const fileStatus = fs.statSync(path.join(dirPath, item))// console.log('fileStatus:',fileStatus)// console.log(fileStatus.isDirectory()) // 判断是否为⽂件夹if(fileStatus.isDirectory()){getDirFile(path.join(dirPath, item))}}})}getDirFile(__dirname)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
nodejs文件操作模块FS(File System)常用函数简明总结
件系统操作相关的函数挺多的。
首先可以分为两大类。
一类是异步+回调的。
一类是同步的。
在这里只对异步的进行整理,同步的只需要在函数名称后面加上Sync即可
1.首先是一类最常规的读写函数,函数名称和形式,应该是起源于C语言的。
复制代码代码如下:
fs.open(文件路径,读写标识,[文件mode值,666],回调函数(err,文件句柄fd));
fs.read(文件句柄fd,被写入的buffer,offset,length,position,回调函数(err,bytesRead,buffer)); fs.write(文件句柄fd,被读取的buffer,offset,length,position,回调函数(err,bytesWritten,buffer)); fs.close(文件句柄,回调函数)
fs.truncate(文件句柄,截断长度,回调函数);
fs.fsync(文件句柄,回调函数);
2.直接对文件进行读写的,用起来比较方便。
复制代码代码如下:
fs.readFile(文件名,编码,回调函数(err,data));
fs.writeFile(文件名,数据,编码,回调函数(err));
fs.appendFile(文件名,数据,编码,回调函数(err));
3.其它常用文件操作
复制代码代码如下:
判断文件是否存在
fs.exists(文件路径,callback(是否存在));
重命名
fs.rename(旧文件名,新文件名,回调函数);
文件所有者变更
fs.chown(文件名,uid,gid,回调函数);/fs.fchown(文件句柄fd,uid,gid,回调函数);/fs.lchown(链接路径,uid,gid,回调函数);
文件权限变更
fs.chmod(文件名,mode,回调函数);/fs.fchmod(文件句柄,mode,回调函数);/fs.lchmod(链接路径,mode,回调函数);
文件信息
fs.stat(文件路径,回调函数(err.fs.Stats对象));/fs.fstat(文件句柄fd,回调函数(err.fs.Stats对象));/fs.lstat(链接路径,回调函数(err.fs.Stats对象));
文件时间
fs.utimes(文件路径,访问时间,新建时间,回调函数);/fs.futimes(文件句柄,访问时间,新建时间,回调函数);
监视文件
fs.watchFile(文件名,[options],listener_callback(当前文件的stats,改变前的stats));
fs.unwatchFile(文件名);
4.目录操作
复制代码代码如下:
fs.mkdir(路径,权限mode/777,回调函数);
fs.rmdir(路径,回调函数);
fs.readdir(路径,回调函数(err,fileNameArray));
5.链接文件操作
复制代码代码如下:
创建一个链接
fs.link(srcpath,dstpath,[callback])
fs.symlink(destination,path,[type],[callback]) 读取链接指向的路径
fs.readlink(path,[callback(err,linkstr)])
fs.unlink(path,[callback]);。