node之module与fs文件系统
命令行窗口(小黑屏)、cmd窗口、终端、shell
开始菜单 --> 运行 --> CMD --> 回车
常用的指令:
dir 列出当前目录下的所有文件
cd 目录名 进入到指定的目录
md 目录名 创建一个文件夹
rd 目录名 删除一个文件夹
目录:
. 表示当前目录
.. 表示上一级目录
环境变量(window系统中的变量)
在path环境变量定义之后,在此电脑任何位置都能访问到。
当我们在命令行窗口打开一个文件,或调用一个函数时,系统会首先在当前目录下寻找文件程序,如果找到了则直接打开;如果没有找到则会依次到环境变量path的路径中寻找,直到找到为止;如果没找到则报错
模块
模块的定义:
在Node中,一个js文件就是一个模块
默认情况下在js文件中编写的内容,都是运行在一个独立的函数中,外部模块无法访问
导出变量和函数:
使用 exports
exports.属性 = 属性值;
exports.方法 = 函数;
使用module.exports
module.exports.属性 = 属性值;
module.exports.方法 = 函数;
module.exports = {};
模块的标识:
模块的标识就是模块的名字或路径
我们node是通过模块的标识来寻找模块的
对于核心模块(npm中下载的模块),直接使用模块的名字对其进行引入
var fs = require("fs");
var express = require("express");
对于自定义的文件模块,需要通过文件的路径来对模块进行引入
路径可以是绝对路径,如果是相对路径必须以./或../开头
var router = require("./router");
node中模块执行机制:
在node中有一个全局变量 global ,它的作用和网页中 window 类似
在全局中创建的变量都会作为 global 的属性保存
在全局中创建的函数都会作为 global 的方法保存
当node在执行模块中的代码时,它会首先在代码的最外部,添加如下代码:
function(exports,require,module,_filename,_dirname){
//实际上模块中的代码都是包装在一个函数中执行的,并且在执行时,同时传递了5个参数
exports 该对象用来将变量或函数暴露到外部
require 函数,用来引入外部的模块
module module代表的是当前模块本身
exports就是module的属性
既可以使用exports导出,也可以使用module.exports导出
_filename 当前模块的完整路径
_dirname 当前模块所在文件夹的完整路径
}
//保存当前执行的函数对象
arguments.callee
exports 和 module.exports:
//通过exports只能使用.的方式来向外暴露内部变量
exports.xxx = xxx
//而module.exports既可以通过.的形式,也可以直接赋值
module.exports.xxx = xxxx
module.exports = {}
npm的命令
npm -v 查看npm的版本
npm version 查看所有模块的版本
npm search 包名 搜索包
npm install / i 包名 安装包
npm remove / r 包名 删除包
npm install 包名 --save 安装包并添加到依赖中
npm install 下载当前项目所依赖的包
npm install 包名 -g 全局安装包(全局安装的包一般都是一些工具)
node命令:
1.npm init
//初始化node项目
2.npm install express
//下载express模块包
3.npm install body-parser
//第二步已下载
node_module
通过npm下载的包都放到node_module文件夹中
我们通过npm下载的包,直接通过包名引入即可
node在使用模块名字来引入模块时,它会首先在当前目录的node_module中寻找是否含有该模块
如果有则直接使用,如果没有则去上一级目录的node_module中寻找
如果有则直接使用,如果没有则再去上一级目录中寻找,直到找到为止
直到找到磁盘的根目录,如果依然没有,则报错。
Buffer(缓冲区)
Buffer 的结构和数组很像,操作的方法也和数组类似
数组中不能存储二进制的文件,而buffer就是专门用来存储二进制数据
使用buffer不需要引入模块,直接使用即可
在buffer中存储的都是二进制数据,但是在显示时都是以16进制的形式显示
buffer中每一个元素的范围是从00-ff 0-255
000000000 - 11111111
计算机 一个0 或一个1 我们成为1位(bit)
8bit = 1byte(字节)
buffer中的一个元素,占用内存的一个字节
buffer的大小一旦确定,则不能更改,buffer实际上是对底层内存的直接操作
buffer常用方法
Buffer.from(str) 将一个字符串转换为buffer
Buffer.allloc(size) 创建一个指定大小的Buffer
Buffer.alloUnsafe(size) 创建一个指定大小的Buffer,但是可能包含敏感数据
buf.toString() 将缓冲区的数据转换为字符串
fs文件系统
概念:
文件系统简单来说就是通过Node来操作系统中的文件
使用文件系统,需要先引入fs模块,fs模块时核心模块,直接引入不需要下载
同步文件的写入
1.打开文件
fs.openSync(path,flags[,model])
// path 要打开文件的路径
// flags 打开文件要做的操作的类型
r 只读的
w 可写的
// model 设置文件的操作权限,一般不传
返回值:
//该方法会返回一个文件的描述符作为结果,我们可以通过该描述符来对文件进行各种操作
2.向文件中写入内容
fs.writeSync(fd,string[,position[,encoding]])
// fd 文件的描述符,需要传递要写入文件的描述符
// string 要写入的内容
// position 写入的起始位置
// encoding 写入的编码,默认utf-8
例: fs.writeSync(fd,"今天天气真不错~~~~");
3.保存并关闭文件
fs.closeSync(fd)
//fd 要关闭的文件的描述符
异步文件的写入
1.打开文件
fs.open(path,flags[,model],callback)
//异步调用的方法,结果都是通过回调函数的参数返回的
//回调函数两个参数:
err 错误对象,如果没有错误则为null
fd 文件的描述符
2.写入文件
fs.write(fd,string[,position[,encoding]],callback)
3.关闭文件
fs.close(fd,callback)
具体用法实例:

简单文件的写入
fs.writeFile(file,data[,option],callback)
fs.writeFileSync(file,data[,option])
// file 要操作的文件的路径
// data 要写入的数据
// option 选项,可以对写入进行一些设置
// callback 当写入完成以后执行的函数
具体用法实例:

node之module与fs文件系统的更多相关文章
- node.js常用的fs文件系统
fs文件系统模块对于系统文件及目录进行一些读写操作. 模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的 ...
- node.js模块之fs文件系统
fs 模块是文件操作的封装,它提供了文件的读取.写入.更名.删除.遍历目录.链接等 POSIX 文件系统操作.与其他模块不同的是,fs 模块中所有的操作都提供了异步的和同步的两个版本, 例如读取文件内 ...
- Node.js核心模块-fs文件系统
fs是file-system的简写,文件系统的意思.在Node中如果想要进行文件操作,就必须引入fs这个核心模块. 引入 const fs = require('fs') fs.readFile(pa ...
- Node.js中的fs文件系统
fs.stat 检测是文件还是目录 fs.mkdir 创建目录 fs.writeFile 创建写入文件 fs.appendFile 追加文件 fs.readFile 读取文件 fs.readdir 读 ...
- Node.js:fs文件系统模块
fs文件系统模块,这是一个非常重要的模块,对文件的操作都基于它.该模块的所有方法都有同步和异步两种方式,下面便介绍一下该模块的使用. 1.检测当前进程对文件的权限 使用fs.access(path[, ...
- node.js中fs文件系统模块的使用
node.js中为我们提供了fs文件系统模块,实现对文件或目录的创建,修改和删除等操作. fs模块中,所有的方法分为同步和异步两种实现. 有 sync 后缀的方法为同步方法,没有 sync 后缀的方法 ...
- node.js中常用的fs文件系统
fs文件系统模块对于系统文件及目录进行一些读写操作. 模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的 ...
- Node.js fs文件系统模块
一.读取文件几个步骤 1.先引入fs文件系统模块 2.使用readfile 或 readFileSync 注意点:它们的回调函数有两个参数,第一个是err,第二个是data,得到的data是buffe ...
- ionic Cannot find module 'internal/fs'问题
最近升级了node.js到7.3.0之后,在用cordoval add plugin XXX 命令安装插件的时候报"Cannot find module 'internal/fs'" ...
随机推荐
- Mysql资料 数据类型
目录 一.类型 整型 浮点型 定点数 字符串 二进制数据 时间日期类型 二.长度和范围 三.使用建议 原则 存储引擎 text和blob 浮点数和定点数 四.属性 一.类型 整型 取值范围如果加了un ...
- netty系列之:一个价值上亿的网站速度优化方案
目录 简介 本文的目标 支持多个图片服务 http2处理器 处理页面和图像 价值上亿的速度优化方案 总结 简介 其实软件界最赚钱的不是写代码的,写代码的只能叫马龙,高级点的叫做程序员,都是苦力活.那么 ...
- [BUUCTF]PWN——pwnable_orw
pwnable_orw 附件 步骤: 例行检查,32位程序,开启了canary 本地运行一下程序,看看大概的情况,提示我们输入shellcode 32位ida载入,检索字符串,没看见什么可以直接利用的 ...
- [BUUCTF]PWN——jarvisoj_fm
jarvisoj_fm 附件 步骤: 例行检查,32位,开启了canary和nx保护 运行一下程序,看看大概的情况 32位ida载入,shift+f12检索程序里的字符串,看见了 " /bi ...
- 如何在 GitHub 上高效阅读源码?
原文链接: 如何在 GitHub 上高效阅读源码? 之前听说过一个故事,一个领导为了提高团队战斗力,把团队成员集中起来,搞封闭开发,重点还是在没有网的条件下. 结果就是一个月过去了,产出基本为零. 我 ...
- java 输入输出IO流 字节流| 字符流 的缓冲流:BufferedInputStream;BufferedOutputStream;BufferedReader(Reader in);BufferedWriter(Writer out)
什么是缓冲流: 缓冲流的基本原理,是在创建流对象时,会创建一个内置的默认大小的缓冲区数组,通过缓冲区读写,减少系统IO次数,从而提高读写的效率. 图解: 1.字节缓冲流BufferedInputStr ...
- PSpiceAA-高级分析例程
一.高级分析应用例程 1.1.例程电路原理图(同向放大电路) 器件模型使用PSpice-ELEM库中的模型. 1..1.1.仿真测试波形图 1.2.灵敏度分析 1.2.1菜单选择:PSpice-> ...
- axiso 高级封装
import axios from 'axios'; import qs from 'qs'; const Unit = { async getApi(ajaxCfg){ let data = a ...
- React-Router(一)
React-Router基础知识 import React from "react"; import { BrowserRouter as Router, Switch, Rout ...
- Linux下使用JDK11部署Nacos启动报错:Could not find or load main class
Linux下使用JDK11部署Nacos 错误日志 /nacos/jdk-11.0.12/bin/java -server -Xms2g -Xmx2g -Xmn1g -XX:MetaspaceSize ...