nodejs中的读取文件fs与文件路径path解析

这篇文章主要介绍了nodejs中的读取文件fs与文件路径path解析,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

什么是nodejs?

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,nodejs允许javascript代码运行在服务端

1. nodejs不是一门新的编程语言,nodejs是在服务端运行javascript的运行环境

2. 运行环境:写得程序想要运行必须要有对应的运行环境

  • php代码必须要有apache服务器
  • 在web端,浏览器就是javascript的运行环境
  • 在服务端,nodejs就是javascript的运行环境

2. javascript并不只是能运行在浏览器端,浏览器端能够运行js是因为浏览器有js解析器,因此只需要有js解析器,任何软件都可以运行js。

3. nodejs可以在服务端运行js,因为nodejs是基于chrome v8的js引擎。

4.下载地址:https://nodejs.org/en/download/

global模块-全局变量

Node.js 中的全局对象是 global, 类似于浏览器中的window

常用的global属性

  • console: 用于打印日志
  • setTimeout/clearTimeout: 设置清除延时器
  • setInterval/clearInterval: 设置清除定时器
  • __dirname: 当前文件的路径,不包括文件名
  • __filename: 获取当前文件的路径,包括文件名

//与模块化相关的,模块化的时候会用到

  • require
  • exports
  • module

fs模块

fs模块是nodejs中最常用的一个模块,因此掌握fs模块非常的有必要,fs模块的方法非常多,用到了哪个查哪个即可。

文档地址:http://nodejs.cn/api/fs.html

注意:

  • 除了global模块中的内容可以直接使用,其他模块都是需要加载的。
  • fs模块不是全局的,不能直接使用。因此需要导入才能使用。
const fs = require("fs");

读取文件

语法:fs.readFile(path[, options], callback)

方式一:不传编码参数

//参数1: 文件的名字 //参数2: 读取文件的回调函数   //参数1:错误对象,如果读取失败,err会包含错误信息,如果读取成功,err是null   //参数2:读取成功后的数据(是一个Buffer对象) fs.readFile("data.txt", function(err, data){   console.log(err);   console.log(data); });

方式二:传编码参数

//参数1: 文件的路径 //参数2: 编码,如果设置了,返回一个字符串,如果没有设置,会返回一个buffer对象 //参数3: 回调函数 fs.readFile("data.txt", "utf8",function(err, data){   console.log(err);   console.log(data); });

关于Buffer对象

1. Buffer对象是Nodejs用于处理二进制数据的。

2. 其实任意的数据在计算机底层都是二进制数据,因为计算机只认识二进制。

3. 所以读取任意的文件,返回的结果都是二进制数据,即Buffer对象

4. Buffer对象可以调用toString()方法转换成字符串。

写文件

语法:fs.writeFile(file, data[, options], callback)

//参数1:写入的文件名(如果文件不存在,会自动创建) //参数2:写入的文件内容(注意:写入的内容会覆盖以前的内容) //参数3:写文件后的回调函数 fs.writeFile("2.txt", "hello world, 我是一个中国人", function(err){   if(err) {     return console.log("写入文件失败", err);   }   console.log("写入文件成功"); });

注意:

写文件的时候,会把原来的内容给覆盖掉

追加文件

语法:fs.appendFile(path, data[, options], callback)

//参数1:追加的文件名(如果文件不存在,会自动创建) //参数2:追加的文件内容(注意:写入的内容会覆盖以前的内容) //参数3:追加文件后的回调函数 fs.appendFile("2.txt", "我是追加的内容", function(err){   if(err) {     return console.log("追加文件内容失败");   }   console.log("追加文件内容成功"); })

文件同步与异步的说明

fs中所有的文件操作,都提供了异步和同步两种方式

异步方式:不会阻塞代码的执行

//异步方式 var fs = require("fs");   console.log(111); fs.readFile("2.txt", "utf8", function(err, data){   if(err) {     return console.log("读取文件失败", err);   }   console.log(data); }); console.log("222");

同步方式:会阻塞代码的执行

//同步方式 console.log(111); var result = fs.readFileSync("2.txt", "utf-8"); console.log(result); console.log(222);

总结:同步操作使用虽然简单,但是会影响性能,因此尽量使用异步方法,尤其是在工作过程中。

path模块

路径操作的问题

在读写文件的时候,文件路径可以写相对路径或者绝对路径

//data.txt是相对路径,读取当前目录下的data.txt, 相对路径相对的是指向node命令的路径 //如果node命令不是在当前目录下执行就会报错, 在当前执行node命令的目录下查找data.txt,找不到 fs.readFile("data.txt", "utf8", function(err, data) {   if(err) {     console.log("读取文件失败", err);   }     console.log(data); });

相对路径:相对于执行node命令的路径

绝对路径:__dirname: 当前文件的目录,__filename: 当前文件的目录,包含文件名

path模块的常用方法

关于路径,在linux系统中,路径分隔符使用的是/,但是在windows系统中,路径使用的\  

在我们拼写路径的时候会带来很多的麻烦,经常会出现windows下写的代码,在linux操作系统下执行不了,path模块就是为了解决这个问题而存在的。

常用方法:

path.join();//拼接路径   //windows系统下 > path.join("abc","def","gg", "index.html") "abc\def\gg\a.html"   //linux系统下 > path.join("abc","def","gg", "index.html") 'abc/def/gg/index.html'   path.basename(path[, ext])    返回文件的最后一部分 path.dirname(path)    返回路径的目录名 path.extname(path)    获取路径的扩展名   var path = require("path"); var temp = "abc\\def\\gg\\a.html"; console.log(path.basename(temp));//a.html console.log(path.dirname(temp));//abc\def\gg console.log(path.extname(temp));//.html

以上为个人经验,希望能给大家一个参考,也希望大家多多支持0133技术站。

以上就是nodejs中的读取文件fs与文件路径path解析的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » JavaScript 教程