B站黑马nodejs

node.js是一个基于Chrome V8引擎的JavaScript运行环境。

注意:
浏览器是JavaScript的前端运行环境
Node.js是JavaScript的后端运行环境
Node.js中无法调用DOM和BOM等浏览器内置API

nodejs官网

查看已安装的node.js版本号

node -v

在Windows的powershell和cmd中的快捷键
        使用↑键,可以快速定位到上一次执行的命令
        使用tab键,能够快速补全路径
        使用esc键,能够快速清空当前已输入的命令
        输入cls命令,可以清空终端

fs文件系统模块

fs模块是nodejs官方提供的、用来操作文件的模块。它提供了一系列的方法和属性,用来满足用户对文件的操作需求。

例如:

fs.readFile()方法,用来读取指定文件中的内容
fs.writeFile()方法,用来向指定的文件中写入内容

如果要在JavaScript代码中使用fs模块来操作文件,则需要使用如下的方式先导入它:

const fs=require('fs')

fs.readFile()的语法格式

fs.readFile(path[,options],callback)

参数1:必选参数,字符串,表示文件的路径
参数2:可选参数,表示什么编码格式来去读文件
参数3:必选参数,文件读取完成后,通过回调函数拿到读取的结果

// 导入fs 模块
const fs=require('fs')
// 调用fs.readFile()方法读取文件
fs.readFile('./files/1.txt','utf8',function(err,dataStr){// 打印失败的结果// 如果读取成功,则err的值为null;如果读取失败,则err的值为错误对象,dataStr的值为undefinedconsole.log(err)console.log('-------')// 打印成功的结果console.log(dataStr)
})

判断文件是否读取成功

const fs=require('fs')fs.readFile('./files/1.txt','utf8',function(err,dataStr){if(err){return console.log('读取文件失败!'+err.message)}console.log('读取文件成功!'+dataStr)
})

fs.writeFile()的语法格式

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

参数1:必选参数,需要指定一个文件路径的字符串,表示文件的存放路径
参数2:必选参数,表示要写入的内容
参数3:可选参数,表示已什么格式写入文件内容,默认值是邨utf8
参数4:必选参数,文件写入完成后的回调函数

// 导入fs文件系统模块
const fs=require('fs')
// 调用fs.writeFile()方法,写入文件的内容
fs.writeFile('./files/2.txt','abcd',function(err){// 如果文件写入成功,则err的值等于null// 如果文件写入失败,则err的值等于一个错误对象console.log(err)
})

注意:

fs.writeFile()方法只能用来创建文件,不用用来创建路径

重复调用fs.writeFile()写入同一个文件,新写入的内容会覆盖之前的旧内容

练习

// 导入fs文件系统模块
const fs=require('fs')// 调用fs.readFile()方法读取文件的内容
fs.readFile('./素材/成绩.txt','utf8',function(err,dataStr){if(err){return console.log('读取文件失败~'+err.message)}// console.log('读取文件成功~'+dataStr)// 先把成绩的数据按照空格进行分割const arrOld=dataStr.split(' ')// console.log(arrOld)// 循环分割后的数组,对每一项数据进行字符串的替换操作const arrNew=[]arrOld.forEach(item => {arrNew.push(item.replace('=',':'))});console.log(arrNew)// 把新数组中的每一项进行合并,得到一个新的字符串const newStr=arrNew.join('\r\n')console.log(newStr)// 调用fs.wirteFile()方法,把处理完毕的成绩,写入到新文件中fs.writeFile('./files/成绩-ok.txt',newStr,function(err){if(err){return console.log('写入文件失败~'+err.message)}console.log('成绩写入成功')})
})

fs模块路径动态拼接的问题

在使用fs模块操作文件时,如果提供的操作路径是以./或../开头的相对路径时,很容易出现路径动态拼接错误的问题。

原因:代码在运行的时候,会以执行node命令时所出的目录,动态拼接出被操作文件的完整路径。

解决方案:在使用fs模块操作文件时,直接提供完整的路径,不要提供./或../开头的相对路径,从而仿真路径动态拼接的问题。

// 导入fs文件系统模块
const fs=require('fs')// 出现路径拼接错误的问题,是因为提供了 ./或../开头的相对路径
// 如果要解决这个问题,可以直接提供一个完整的文件存放路径就行
// fs.readFile('./files/1.txt','utf8',function(err,dataStr){
//     if(err){
//         return console.log('读取文件失败!'+err.message)
//     }
//     console.log('读取文件成功!'+dataStr)
// })// 移植性非常差,不利于维护
// fs.readFile('D:\\nodejs-study\\files\\1.txt','utf8',function(err,dataStr){
//     if(err){
//         return console.log('读取文件失败!'+err.message)
//     }
//     console.log('读取文件成功!'+dataStr)
// })// __dirname表示当前文件所处目录
// console.log(__dirname)
fs.readFile(__dirname+'/files/1.txt','utf8',function(err,dataStr){if(err){return console.log('读取文件失败!'+err.message)}console.log('读取文件成功!'+dataStr)
})

__dirname表示当前文件所处目录

nodejs学习-fs模块相关推荐

  1. NodeJS 之 fs 模块(文件操作)

    NodeJS 之 fs 模块(文件系统模块) 参考 描述 fs(File System) 文件 读取 fs.readFile() 判断文件是否读取成功 编码 写入 fs.writeFile() 覆盖 ...

  2. NodeJS 之 fs 模块(路径动态拼接问题)

    NodeJS 之 fs 模块(路径动态拼接问题) 参考 描述 问题 描述 准备工作 content.txt main.js 复现 前奏 惊雷 再探 分析 解决 __dirname path 模块 pa ...

  3. 学习笔记-nodejs之fs模块

    内容大纲 fs模块 属性 文件(夹)是否存在 统计信息 文件 创建 删除 复制 重命名 文件内容 打开 读取 写入 追加 目录 创建 删除 递归删除 异步删除 读取 移动 监视 文件 文件夹 权限 f ...

  4. NodeJs 的fs模块

    <1>js 里面的fs模块 readFile(),readFileSync() writeFile(),writeFileSync() exists(path, callback) mkd ...

  5. Nodejs学习事件模块

    1.nodejs 版本为v6.2.0,events是node.js 最重要的模块,events模块只提供了一个对象EventEmitter,EventEmitter 的核心是事件发射与事件监听器.可以 ...

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

    本文主要介绍了node.js基于fs模块对系统文件及目录进行读写操作的方法,结合实例形式分析了nodejs使用fs模块针对文件与目录的读写.创建.删除等相关操作技巧,需要的朋友可以参考下. 如果要用这 ...

  7. nodejs基础 ps模块常用API用法

    nodejs的fs模块就是针对文件和文件夹进行一系列的操作 常用的fs模块API(感兴趣的可以去node官网看更多的) fs.readFile():用来读取文件内容的函数 fs.readdir():读 ...

  8. 好程序员web前端分享Nodejs学习笔记之Stream模块

    好程序员web前端分享Nodejs学习笔记之Stream模块 一,开篇分析 流是一个抽象接口,被 Node 中的很多对象所实现.比如对一个 HTTP 服务器的请求是一个流,stdout 也是一个流.流 ...

  9. Nodejs学习笔记(二)——模块

    [目录] Nodejs学习笔记(一)--基础之全局对象.包和npm Nodejs学习笔记(三)--同步和与异步之文件系统模块 Nodejs学习笔记(四)--http协议与服务器 Nodejs学习笔记( ...

最新文章

  1. 智能物联网(AIoT,2020年)(中)
  2. 2.pandas数据清洗
  3. 网络营销中SEO是最常用的“圈粉”引流方式之一
  4. MySQL基础之控制台常用命令
  5. 盘点Kubernetes网络问题的4种解决方案
  6. 06.移动先行之谁主沉浮----我的代码我来写(Xaml的优势)
  7. C++(STL):29 ---关联式容器map 迭代器
  8. [转载] JAVA语言程序设计(基础篇)第十版课后题答案(第一章)
  9. 信息学奥赛一本通(1124:矩阵加法)
  10. springboot启动 fastDFS启动报错 mbeanExporter: defined by method 'mbeanExporter' in class path
  11. maven命令打jar包
  12. android view 3d,Android 使用ViewPager打造3D画廊效果
  13. 图文详解win7实现局域网共享文件
  14. js 拖拽上传文件及文件夹
  15. Java||求集合数组中的中位数
  16. DOOM3源码分析相关文章集合
  17. php永久mediaid,幺蛾子事件之-zabbix配置告警媒介报错mediaid重复
  18. pb函数库之字符串操作函数
  19. 小红书主页爬取_小红书数据爬取教程
  20. 便笺Sticky note常用快捷键

热门文章

  1. QXcbConnection: Could not connect to display :0
  2. Android Factory Images for Nexus Devices
  3. IDES翻译—采购流程中的Enjoy界面
  4. 程序员,绝不认输!!
  5. (-2147483648 0)?
  6. android 漩涡动画,html5 canvas酷炫的粒子漩涡动画特效
  7. 使用volley进行网络请求
  8. android沉浸式+虚拟按键+Fragment+CoordinatorLayout(2)
  9. 时间序列问题案例分析Kaggle M5 Forecasting(代码+数据)
  10. 控制算法--1 二值位式控制算法