nodejs文件操作模块FS(File System)常用函数简明总结
- 格式:docx
- 大小:13.29 KB
- 文档页数:2
使⽤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是一个基于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模块方法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])这个方法用于更改文件或目录的权限。
文件系统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模块是用于与文件系统进行交互的模块,它提供了许多常用的方法来进行文件的读取、写入、删除等操作。
以下是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的⽂件系统、⽂件流及路径操作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来处理与文件系统的交互。
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模块// 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)。
node.js中fs模块常用方法全文共四篇示例,供读者参考第一篇示例:node.js中fs模块是一个用于处理文件系统操作的模块,提供了许多常用的方法来处理文件的读取、写入、删除等操作。
在node.js中,fs模块是一个内置的核心模块,无需额外安装。
本文将介绍一些node.js中fs模块常用的方法和用法。
一、fs模块的基本使用在node.js中使用fs模块进行文件系统操作非常简单,只需要引入fs模块即可开始操作文件。
例如:```javascriptconst fs = require('fs');```接下来,就可以使用fs模块提供的方法来实现文件的读取、写入、删除等操作。
二、常用方法1. 文件读取fs模块提供了多个方法用于读取文件内容,其中最常用的方法是fs.readFile()。
该方法的基本用法如下:path为文件路径,options为读取选项,callback为回调函数。
例如:```javascriptfs.readFile('file.txt', 'utf8', (err, data) => {if (err) throw err;console.log(data);});```该方法会异步地读取文件内容,并在回调函数中将内容传递给data参数。
2. 文件写入如果要同步地写入文件内容,可以使用fs.writeFileSync()方法。
该方法的用法如下:3. 文件删除4. 其他常用方法除了上述常用的文件读取、写入、删除方法之外,fs模块还提供了许多其他常用的方法,如文件重命名、文件夹创建、文件夹删除等。
fs.rename()方法用于重命名文件,fs.mkdir()方法用于创建文件夹,fs.rmdir()方法用于删除文件夹等。
三、总结以上就是本文的全部内容,希望对您有所帮助。
感谢阅读!第二篇示例:Node.js是一种基于Chrome V8引擎的JavaScript运行环境,专注于提供高效的异步I/O操作。
nodejs⽂件操作模块FS(FileSystem)常⽤函数简明总结件系统操作相关的函数挺多的。
⾸先可以分为两⼤类。
⼀类是异步+回调的。
⼀类是同步的。
在这⾥只对异步的进⾏整理,同步的只需要在函数名称后⾯加上Sync即可复制代码代码如下: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(⽂件句柄,回调函数);复制代码代码如下:fs.readFile(⽂件名,编码,回调函数(err,data));fs.writeFile(⽂件名,数据,编码,回调函数(err));fs.appendFile(⽂件名,数据,编码,回调函数(err));复制代码代码如下:判断⽂件是否存在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(⽂件名);复制代码代码如下:fs.mkdir(路径,权限mode/777,回调函数);fs.rmdir(路径,回调函数);fs.readdir(路径,回调函数(err,fileNameArray));复制代码代码如下:创建⼀个链接fs.link(srcpath, dstpath, [callback])fs.symlink(destination, path, [type], [callback])读取链接指向的路径fs.readlink(path, [callback(err,linkstr)])fs.unlink(path,[callback]);。
node.js中fs⽂件系统⽬录操作与⽂件信息操作⽬录操作如果存在该⽬录,就创建失败同步创建⽬录fs.mkdirSync(path, [mode])const fs = require('fs');let mkdir = './mkdir';fs.mkdir(mkdir, (err) => {if (err) {console.log(`mkdir ${mkdir} file failed~`);} else {console.log(`mkdir ${mkdir} file success~`);}});读取⽬录如果读取的⽬录下有⼦⽬录或⼦⽂件,将会把⼦⽬录或⼦⽂件的⽂件名作为files的数组元素同步读取⽬录fs.readdirSync()const fs = require('fs');let mkdir = './mkdir';fs.mkdir(mkdir, (err) => {if (err) {console.log(`mkdir ${mkdir} file failed~`);return false;}console.log(`mkdir ${mkdir} file success~`);let fileName = ['ONE', 'TWO', 'THREE'];fileName.forEach((elem) => {fs.mkdir(`${mkdir}/${elem}`, (err) => {if (err) {console.log(`${mkdir}/${elem} failed~`);return false;}});fs.readdir(mkdir, (err, files) => {if (err) {console.log(`readdir ${mkdir} file failed~`);return false;}console.log(`readdir ${mkdir} file success~`);console.log(`${files}`);});});});查看与修改⽂件或⽬录信息在fs模块中,可以使⽤stat⽅法或者lstat⽅法查看⼀个⽂件或⼀个⽬录。
nodejs模块——fs模块fs模块⽤于对系统⽂件及⽬录进⾏读写操作。
⼀、同步和异步使⽤require('fs')载⼊fs模块,模块中所有⽅法都有同步和异步两种形式。
异步⽅法中回调函数的第⼀个参数总是留给异常参数(exception),如果⽅法成功完成,该参数为null或undefined。
异步写法demo:有⼀个回调函数。
var fs = require('fs'); // 载⼊fs模块fs.unlink('/tmp/shiyanlou', function(err) {if (err) {throw err;}console.log('成功删除了 /tmp/shiyanlou');});同步写法demo:var fs = require('fs');fs.unlinkSync('/tmp/shiyanlou'); // Sync 表⽰是同步⽅法console.log('成功删除了 /tmp/shiyanlou');同步⽅法执⾏完并返回结果后,才能执⾏后续的代码。
⽽异步⽅法采⽤回调函数接收返回结果,可以⽴即执⾏后续代码。
⼆、readFile读取⽂件fs.readFile(filename,[option],callback) ⽅法读取⽂件。
参数说明:filename String ⽂件名option Objectencoding String |null default=nullflag String default='r'callback Functiondemo有⼀个⽂本⽂件text.txt内容如下line oneline two和text.txt相同⽬录中有⼀个readfile.js,内容如下readFile的回调函数接收两个参数,err是读取⽂件出错时触发的错误对象,data是从⽂件读取的数据。
node.js中fs⽂件系统模块的使⽤⽅法实例详解本⽂实例讲述了node.js中fs⽂件系统模块的使⽤⽅法。
分享给⼤家供⼤家参考,具体如下:node.js中为我们提供了fs⽂件系统模块,实现对⽂件或⽬录的创建,修改和删除等操作。
fs模块中,所有的⽅法分为同步和异步两种实现。
有 sync 后缀的⽅法为同步⽅法,没有 sync 后缀的⽅法为异步⽅法。
⼀、⽂件的整个读取const fs = require('fs');//参数⼀表⽰读取的⽂件//参数⼆表⽰读取的配置,{encoding:'null', flag:'r'}//encoding 表⽰编码⽅式//flag 表⽰⽂件系统标志//如果没有指定参数⼆中的encoding,则data返回的是⼀个Bufferfs.readFile('./1.txt', function (err, data) {console.log(data);});//如果指定了,则data返回的是解析后的字符串fs.readFile('./1.txt', {'encoding': 'utf8', 'flag': 'r'}, function (err, data) {console.log(data);});或同步读取:const fs = require('fs');let data = fs.readFileSync('./1.txt');console.log(data);let data2 = fs.readFileSync('./1.txt', {'encoding': 'utf8'});console.log(data2);⼆、往⽂件写⼊数据const fs = require('fs');//参数⼀表⽰需要写⼊的⽂件//参数⼆表⽰写⼊的数据//参数三表⽰写⼊配置 {encoding:'utf8', mode:'0o666', flag:'w'}//encoding 表⽰⽂件编码//mode 表⽰⽂件权限//flag 表⽰表⽰⽂件系统标志fs.writeFile('./1.txt', '数据', {'mode': 0o666, 'flag': 'w'}, function (err) {console.log(err);});//注意如果⽂件已存在,默认会覆盖写⼊fs.writeFile('./1.txt', '你好', function (err) {console.log(err);});//如果想追加写⼊,将flag设置为'a'就可以了。
简单的nodejs⽂件系统(fs)读写例⼦。
在nodejs中,可以通过fs(file system)模块进⾏⽂件的I/O操作。
API链接地址:下⾯进⾏fs⽂件系统的使⽤实例:1、模块调⽤声明:var fs= require('fs');var path = require('path');fs为⽂件模块,path为系统路径模块。
2、可以使⽤writeFile⽅法,将数据写⼊⽂件到某个⽂件夹下。
fs.writeFile(filename, data, [options], callback)filename为具体的⽂件保存路径地址,data为具体要写⼊⽂件的数据对象,[options]为具体的保存⽂件配置,编码格式等,callback为具体的回调函数,进⾏相应的错误捕捉及提⽰。
代码如下:fs.writeFile(path.join(__dirname, 'account.js'), JSON.stringify(tempAccount), function (err) {if (err) throw err;console.log("Export Account Success!");});以JSON格式将数据写⼊到⽂件路径下。
3、使⽤readFile⽅法,进⾏⽂件数据的读取。
fs.readFile(filename, [options], callback)filename为⽂件路径及名称,[options]为具体选项配置,包括数据的编码⽅式,callback为回调函数,进⾏相应的错误处理及提⽰。
代码如下:fs.readFile(path.join(__dirname, 'account.js'), function (err,bytesRead) {if (err) throw err;console.log(bytesRead);});结果为:读出数据⼆进制的流⽂件,如果需要为具体的数据,需要进⾏编码的配置,代码如下:fs.readFile(path.join(__dirname, 'account.js'),{encoding:'utf-8'}, function (err,bytesRead) {if (err) throw err;var data=JSON.parse(bytesRead);console.log(data[0]);console.log("readFile success");});结果为:4、读取⽂件夹下的相关ingwenj名称。
nodejs中内置模块fs,path常见的⽤法说明readFilereadFileSync 同步读取数据var fs=require('fs');fs.readFileSync('./a.txt');readFile 异步读取数据var fs=require('fs'); //引⼊⽂件fs.readFile('./a.txt',function(err,data){//当异步读取完⽂件数据后执⾏该回调函数中代码//err 错误对象;//data 数据if(err){console.log('读取⽂件出错');return;}//正常打印数据console.log(data.toString());})console.log('111');写⽂件writeFilewriteFileSync 同步读取数据var fs=require('fs'); //引⼊内置模块fs.writeFileSync("b.txt","我是写⼊的内容");writeFile 异步读取数据fs.writeFile('c.txt','我是写⼊的内容',function(err){if(err){console.log('写⽂件出错');return;}console.log('写⽂件出错');})console.log('111');练习var fs=require('fs'); //引⼊⽂件模块fs.mkdirSync('./web1804'); //同步创建⽬录;fs.writeFileSync('./web1804/node1.txt','这是我的学习笔记');var data=fs.readFileSync('./web1804/node1.txt');console.log(data.toString());fs.mkdir('./web1804_1',function(err){if(err){console.log('创建⽬录失败');return;}console.log('创建⽬录成功');})var isExist=fs.existsSync('./web1804');拓展1、⽂件删除;2、创建多级⽬录 d:/web1804/javascript/css3、删除⽂件⽬录4、复制⽂件创建⽬录fs.mkdir检测是⽂件还是⽬录 fs.stat写⼊追加⽂件 fs.oppendFile读取⽬录fs.readdir重命名 rename删除⽬录 rmdir删除⽂件 unlinkpathvar path=require('path);var psth1="/img.jpg ";var index=psth1.indexOf('/');console.log(index);var lastindex=stIndexOf('/'); //从后向前获取指定字符在字符串中的序号var sub=path1.substring(lastindex+1); //substring(index) 返回指定序号index后的⼦字符串console.log('sub:+'+sub);path.basename返回路径的最后⼀部分var psth1="/img.jpg ";var imgName=path.basename(path1); //返回路径的最后⼀部分,个⼈认为⽤这个来获取⽂件名或者URL中带的参数console.log(imgName);path.jionvar paths=path.jion('web1804','html','css');console.log(paths); //web1804\html\csspath.parse返回路径字符串的对象var path1='/img.jpg';var url=path.parse(path1);console.log(url);console.log(_dirname); 当前绝对路径拓展substring(); 返回指定序号index后的⼦字符串;lastIdexOf 从后向前获取指定字符中在字符串中序号;补充知识:NodeJs内置的url、path、http模块的应⽤1.url模块://引⼊url模块var url = require("url");//假设⼀个⽹址var href = "?name=jhh&age=20";//将⽹址解析成⼀个Url对象var obj = url.parse(href,true);console.log(obj);//获取Url对象中的query对象var query = obj.query;console.log("queryName:"+);console.log("queryAge:"+query.age);2.path模块://引⼊path模块var p = require("path");//⾃定义绝对路径var path = "C:\\jhh\\text\\js";//去掉最后⼀层console.log(p.dirname(path)); //C:\jhh\text//取最后⼀层console.log(p.basename(path)); //js3.http模块://引⼊http模块var http = require("http");//创建web服务器var server = http.createServer();//监听请求server.on("request",function (request, response) {console.log("收到⽤户请求:"+request.method);var url = request.url;var msg = "";if(url == "/"){msg = "这是主页"}else if(url == "/login"){msg = "这是登录页"}else {msg = "404";}//解决相应乱码response.setHeader("content-type","text/html;charset=utf-8");//相应数据response.write(msg);//结束相应response.end();});//启动服务器server.listen(8081,function () {console.log("服务器启动")});以上这篇nodejs中内置模块fs,path常见的⽤法说明就是⼩编分享给⼤家的全部内容了,希望能给⼤家⼀个参考,也希望⼤家多多⽀持。
node.js-fs⽂件系统模块这是你知道吗⽬录1、什么是fs⽂件系统模块2、读取指定⽂件的内容1、fs.readFile()的语法格式2、fs.readFile()读取⽂件内容3、判断⽂件是否读取成功3、向指定⽂件写⼊内容1、fs.writeFile()的语法格式2、fs.writeFile()写⼊⽂件3、fs.writeFile()判断写⼊是否成功4、写⼊⽂件和读取⽂件综合应⽤5、fs模块-路径动态拼接问题总结1、什么是fs⽂件系统模块【解释】: fs⽂件系统模块是Node.js官⽅提供的,⽤来操作⽂件的模块,它提供了⼀系列的⽅法和属性,⽤来满⾜⽤户对⽂件操作的基本需求。
【基本使⽤】:安装node后直接导⼊const fs = require ('fs')2、读取指定⽂件的内容1、fs.readFile()的语法格式【语法】:fs.readFile(path, [,options], callback)【参数解读】:参数1:必选参数,表⽰读取⽂件的路径参数2:可选参数,表⽰可选参数,表⽰通过什么⽅式的编码来读取⽂件参数3:必选参数,回调函数,通过回调函数获取⽂件内容2、fs.readFile()读取⽂件内容【代码⽰例】:// 1、导⼊fs模块const fs = require('fs');// 2、使⽤fs.readfiles()⽅法读取指定⽂件的内容/*** 参数1:读取⽂件的存放路径* 参数2:读取⽂件的时候采⽤的编码格式* 参数3:回调函数,参数1表⽰读取失败的结果参数2 表⽰读取成功的结果*/fs.readFile('./files/11.txt', 'utf-8', function (err, dataStr) {// ⽂件信息读取成功的时候err返回值是nullconsole.log(err);console.log('------------------');console.log(dataStr);})3、判断⽂件是否读取成功【代码⽰例】:// 1、导⼊fs模块const fs = require('fs');// 2、使⽤fs.readfiles()⽅法读取指定⽂件的内容/*** 参数1:读取⽂件的存放路径* 参数2:读取⽂件的时候采⽤的编码格式* 参数3:回调函数,参数1表⽰读取失败的结果参数2 表⽰读取成功的结果*/fs.readFile('./files/11.txt', 'utf-8', function (err, dataStr) {if (err) {// 读取⽂件失败,返回错误信息return console.log('读取⽂件失败!!' + err.message);;} else {// 读取⽂件成功,打印⽂件信息console.log('读取⽂件成功:'+dataStr);}})3、向指定⽂件写⼊内容1、fs.writeFile()的语法格式【语法】:fs.writeFile(filePath, data, [,option] callback)【参数解读】:参数1:必选参数,指定⽂件字符串路径,表⽰⽂件的存放路径参数2:必选参数,表⽰要写⼊的内容参数3:可选参数,表⽰⽤什么⽅式写⼊内容,默认是utf-8参数4:必选参数,表⽰⽂件写⼊之后的回调函数。
Node.jsfs模块原理及常见⽤途JavaScript 的是没有操作⽂件的能⼒,但是 Node 是可以做到的,Node 提供了操作⽂件系统模块,是 Node 中使⽤⾮常重要和⾼频的模块,是绝对要掌握的⼀个模块系统。
fs 模块提供了⾮常多的接⼝,这⾥主要说⼀下⼀些常⽤的接⼝。
1.常⽤API快速复习fs.stat 检测是⽂件还是⽬录const fs = require('fs')fs.stat('hello.js', (error,stats)=>{if(error) {console.log(error)} else {console.log(stats)console.log(`⽂件:${stats.isFile()}`)console.log(`⽬录:${stats.isDirectory()}`)}})fs.mkdir 创建⽬录const fs = require('fs')fs.mkdir('logs', error => {if(error) {console.log(error)} else {console.log('⽬录创建成功!')}})fs.rmdir 删除⽬录const fs = require('fs')fs.rmdir('logs', error => {if(error) {console.log(error)} else {console.log('成功删除了⽬录 logs')}})fs.writeFile 创建写⼊⽂件const fs = require('fs')fs.writeFile('logs/hello.log','您好~\n', error => {if(error) {console.log(error)} else {console.log('成功写⼊⽂件');}})fs.appendFile 追加⽂件const fs = require('fs')fs.appendFile('logs/hello.log','hello~\n', error => {if(error) {console.log(error)} else {console.log('成功写⼊⽂件');}})fs.readFile 读取⽂件const fs = require('fs')fs.readFile('logs/hello.log','utf-8', (error, data) => {if(error) {console.log(error)console.log(data);}})fs.unlink 删除⽂件const fs = require('fs')fs.unlink(`logs/${file}`, error => {if(error) {console.log(error)} else {console.log(`成功删除了⽂件: ${file}`)}})fs.readdir 读取⽬录const fs = require('fs')fs.readdir('logs', (error, files) => {if(error) {console.log(error)} else {console.log(files);}})fs.rename 重命名,还可以更改⽂件的存放路径const fs = require('fs')fs.rename('js/hello.log', 'js/greeting.log', error => {if(error) {console.log(error)} else {console.log('重命名成功')}})2.第三⽅npm包 mkdirp 的使⽤mkdirp不仅可以创建⽂件夹,还可以创建多层的⽂件夹,类似 mkdir -p 命令midir -p tmp/foo/bar/baz上述命令也可以在当前⽬录创建多层⼏⽂件夹。
NodeJS学习笔记之FS⽂件模块⼀,开篇分析⽂件系统模块是⼀个简单包装的标准 POSIX ⽂件 I/O 操作⽅法集。
可以通过调⽤ require("fs") 来获取该模块。
⽂件系统模块中的所有⽅法均有异步和同步版本。
(1),⽂件系统模块中的异步⽅法需要⼀个完成时的回调函数作为最后⼀个传⼊形参。
(2),回调函数的构成由调⽤的异步⽅法所决定,通常情况下回调函数的第⼀个形参为返回的错误信息。
(3),如果异步操作执⾏正确并返回,该错误形参则为null或者undefined。
如果使⽤的是同步版本的操作⽅法,⼀旦出现错误,会以通常的抛出错误的形式返回错误。
(4),可以⽤try和catch等语句来拦截错误并使程序继续进⾏。
我们先看⼀个简单的例⼦,读取⽂件("bb.txt"):(1),建⽴⽂件"bb.txt“,如下内容(”⼤家好,我是⼤雄君!(*^__^*) 嘻嘻……“)。
(2),读取⽂件操作如下代码:复制代码代码如下:var fs = require("fs") ;fs.readFile("bb.txt","utf8",function (error,data){if(error) throw error ;console.log(data) ;}) ;运⾏结果:这⾥要注意的是:读取⽂件⼀定要设置编码,否则默认是 ”buffer“ 形式出现。
再看没设置的运⾏效果,区别还是很明显的。
如下:再来⼀个写操作,如下:复制代码代码如下:var fs = require("fs") ;var txt = "⼤家要好好学习NodeJS啊" ;//写⼊⽂件fs.writeFile("bb.txt",txt,function (err) {if (err) throw err ;console.log("File Saved !"); //⽂件被保存}) ;运⾏结果:在列举⼀些常⽤的实例:复制代码代码如下:fs.unlink('bb.txt', function(){console.log('success') ;}) ;// 修改⽂件名称fs.rename('bb.txt','bigbear.txt',function(err){console.log('rename success') ;});// 查看⽂件状态fs.stat('bb.txt', function(err, stat){console.log(stat);});// 判断⽂件是否存在fs.exists('bb.txt', function( exists ){console.log( exists ) ;}) ;⼆,Fs与Stream之间的联系"Stream" 具有异步的特性。
Node.js中的fs模块与Path模块⽅法详解概述:⽂件系统模块是⼀个简单包装的标准 POSIX ⽂件 I/O 操作⽅法集。
可以通过调⽤ require("fs") 来获取该模块。
⽂件系统模块中的所有⽅法均有异步和同步版本。
⽂件系统模块中的异步⽅法需要⼀个完成时的回调函数作为最后⼀个传⼊形参。
回调函数的构成由调⽤的异步⽅法所决定,通常情况下回调函数的第⼀个形参为返回的错误信息。
如果异步操作执⾏正确并返回,该错误形参则为null或者undefined。
如果使⽤的是同步版本的操作⽅法,⼀旦出现错误,会以通常的抛出错误的形式返回错误。
可以⽤try和catch等语句来拦截错误并使程序继续进⾏。
fs模块fs 模块是Node.js 官⽅提供的、⽤来操作⽂件的模块,提供了⼀系列的⽅法和属性⽤来满⾜⽤户对⽂件的操作需求。
fs.readFile()⽅法,⽤来读取指定⽂件中的内容fs.wirteFile()⽅法,⽤来向指定⽂件中写⼊内容通过如下⽅式引⼊具体使⽤规则如下:path模块path模块是Node.js官⽅提供的、⽤来处理路径的模块。
⽤来满⾜⽤户对路径的处理和需求。
⾸先通过如下⽅式引⼊例如:path.join()⽅法,⽤来将多个路径⽚段拼接成⼀个完整的路径字符串path.basename()⽅法,⽤来从路径字符串中将⽂件名解析出来path.extname()⽅法,⽤来获取路径中的扩展名部分path.join()⽅法2.path.basename()⽅法3.path.extname()⽅法总结:fs模块与path模块都是Node.js的核⼼模块,⼆者都是对⽂件的操作,但不同的是,fs模块是对⽂件内容读写的操作,⽽path模块是对⽂件名以及路径操作,在使⽤的时候不要搞混。
到此这篇关于Node.js 中的 fs 模块与Path模块⽅法详解的⽂章就介绍到这了,更多相关nodejs fs 模块与Path模块内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
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]);。