同步是指:同步阻塞操作,异步是指:异步非阻塞操作。

第一部分:fs模块

1.引入fs模块

  • require('fs');

2.写文件

01.异步写:writeFile
  • fs.writeFile(path,data[,option],callback)

  • path:文件路径

  • data:写的内容,string/buffer

  • option:配置参数:比如:{encoding:'utf8'}

  • callback(err):回调函数

      //异步写入文件
    function writeFile(){
    fs.readFile('./www/404.html',function(err,data){
    console.log("读取的内容",data)
    fs.writeFile('./test.txt',data,{encoding:"utf8"},function(err){
    if(err){
    console.log("内容写入失败")
    throw err
    }
    console.log("内容写入成功")
    })
    })
    }
    writeFile();
02.同步写:writeFileSync
  • fs.writeFileSync(path,data[,option])

      //同步写入内容
    function writeFileSync(path){
    var result =fs.writeFileSync(path,"测试文本......");
    if(!result){
    console.log("内容写入成功")
    }
    }
    writeFileSync('./test.txt')

3.追加内容

01.异步追加内容:appendFile
  • fs.appendFile(path,data[,option],callback)
02.同步追加内容:appendFileSync
  • fs.appendFileSync(path,data[,option])

4.创建文件夹

01.异步:mkdir
  • fs.mkdir(path,callback)
02.同步:mkdirSync
  • fs.mkdirSync(path)

5.读文件

01.异步读取:readFile
  • fs.readFile(path,callback)
  • path:文件路径
  • callback(err,data):读取的buffer
02.同步读取:readFilerSync
  • fs.readFile(path)

6.读文件夹

01.异步读取:readdir
  • fs.readdir(path,callback)
02.同步读取:readdirSync
  • fs.readdirSync(path)

7.判断文件/文件夹是否存在

01.异步判断:exists
  • fs.exists(path,callback)

  • callback(res):回调,res:true/false

      //异步判断
    function fileExists(path){
    fs.exists(path,function(res){
    //res boolean值表示存在或是不存在
    console.log("判断结果",res); })
    }
    fileExists("./js");
02.同步判断:existsSync
  • fs.existsSync(path)

8.删除文件/文件夹

删除文件:unlink/unlinkSync
删除文件夹:rmdir/rmdirSync
//fs.redir不能删除非空文件夹
function removeDir(dirName){
fs.rmdir(dirName,function(res){
//如果删除成功,则res为null
console.log("操作结果",res)
})
}
removeDir("./css")

9.更改文件/文件夹路径

01.异步:rename
  • fs.rename(oldpath,newpath,callback)
02.同步:renameSync
  • fs.renameSync(oldpath,newpath)

10.监听文件夹

  • fs.watch(dirname,listener)
  • dirname:文件路径
  • listener(curr,prev)
  • curr:当前文件
  • prev:之前文件
  • fs.unwatchFile(filename,listener)

11.其他

获取物理路径:realpath(path,callback(err,resolvePath))/realpathSync(path)
获取文件信息:stat(path,callback(err,stat))
打开文件:fs.open(path,flags,callback(err,fd))
 flags:r    以读取模式打开文件。如果文件不存在抛出异常。
r+ 以读写模式打开文件。如果文件不存在抛出异常。
rs 以同步的方式读取文件。
rs+ 以同步的方式读取和写入文件。
w 以写入模式打开文件,如果文件不存在则创建。
wx 类似 'w',但是如果文件路径存在,则文件写入失败。
w+ 以读写模式打开文件,如果文件不存在则创建。
wx+ 类似 'w+', 但是如果文件路径存在,则文件读写失败。
a 以追加模式打开文件,如果文件不存在则创建。
ax 类似 'a', 但是如果文件路径存在,则文件追加失败。
a+ 以读取追加模式打开文件,如果文件不存在则创建。
ax+ 类似 'a+', 但是如果文件路径存在,则文件读取追加失败。
写文件:fs.write(fd,buffer,offset,length,position,callback(err,bytes))
读文件:fs.read(fd,buffer,offset,length,position,callback(err,bytes))
关闭文件:fs.close(fd,callback(err))

第二部分:模板

1.用于解析,生成,拼接url

2.http://127.0.0.1:3000/list.html?aa=10&bb=20#/ddd

  • 如果为true,则url.query={aa:10,bb:20}
  • 如果为false,则url.query='aa=10&bb=20'

3.url实体字段:

  • protocol:协议
  • host:主机,包含端口
  • hostname:主机名
  • port:端口
  • .hash:hash参数
  • search:?参数
  • query:url参数
  • pathname:路径
  • path:含参数的路径
  • href:完整链接

第三部分:querystring

parse(querystr,sep,eq,option)

  • option:maxKeys:1000
  • sep:参数之间的分隔符
  • eq:参数的赋值连接符

stringify(obj,sep,eq,option)

escape

  • 解码

unescape

  • 解码

第四部分:path

normalize:

  • 标准化路径
  • 生成物理路径

join

  • 整合路径
  • join(path1,path2,...)

resolve

  • 解析为绝对路径
  • resolve(cd1,cd2,cd3,....)
  • 相当于一次次的调用cd命令

relative

  • 解析相对路径
  • relative(from,to)
  • 解析从from到to的相对路径
  • from为文件夹路径

dirname

  • 路径所在文件夹路径
  • dirname(path)

basename

  • 路径的最后一部分
  • basename(path[,ext])
  • ext:想要去掉的文件后缀名

extname

  • 后缀名
  • extname(path)

sep

  • 获取平台的文件路径分隔符
  • path.sep

delimiter

  • 获取平台的路径分割符,比如c:\ ;
  • path.delimiter

第五部分:路径的系统变量

  • __dirname
  • 当前文件夹
  • __filename
  • 当前执行文件的完整路径

node.js2的更多相关文章

  1. Web前端开发推荐阅读书籍、学习课程下载

    转自http://www.xuanfengge.com/fe-books.html 前言 学校里没有前端的课程,那如何学习JavaScript,又如何使自己成为一个合格的前端工程师呢? 除了在项目中学 ...

  2. babeljs源码

    babel.min.js!function(e,t){"object"==typeof exports&&"object"==typeof mo ...

  3. Vue-cli+Vue.js2.0+Vuex2.0+vue-router+es6+webpack+node.js脚手架搭建和Vue开发实战

    Vue.js是一个构建数据驱动的web界面的渐进式框架.在写这边文章时Vue版本分为1.0++和2.0++,这个是基于Vue2.0的项目. Vue-cli是构建单页应用的脚手架,这个可是官方的. Vu ...

  4. Node学习

    参见Node入门 做出node应用的第一个例子 图片上传浏览.

  5. node vue

    官网 ECMAScript 6 Node.Js WebPack Vue.js Vuex Vue-loader (类比css-loader,是webpack中用于处理.vue文件的) vue-route ...

  6. Node.js 初识2

    原文:https://www.cnblogs.com/zzuIvy/p/nodejs_1.html 测试:node.js部署网站 1.创建js2.js var http = require('http ...

  7. Vue学习笔记-Vue.js-2.X 学习(四)===>脚手架Vue-CLI(基本工作和创建)

    (五) 脚手架Vue-CLI 一 Vue-CLI前提(nodejs和webpack) 二  Vue学习-nodejs按装配置,Node.js 就是运行在服务端的 JavaScript. 1. 去nod ...

  8. 在centos7.6上部署前后端分离项目Nginx反向代理vue.js2.6+Tornado5.1.1,使用supervisor统一管理服务

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_102 这一次使用vue.js+tornado的组合来部署前后端分离的web项目,vue.js不用说了,前端当红炸子鸡,泛用性非常广 ...

  9. NPM (node package manager) 入门 - 基础使用

    什么是npm ? npm 是 nodejs 的包管理和分发工具.它可以让 javascript 开发者能够更加轻松的共享代码和共用代码片段,并且通过 npm 管理你分享的代码也很方便快捷和简单. 截至 ...

随机推荐

  1. 使用thymeleaf实现div中加载html

    目标:固定顶部或者左侧导航,点击导航动态更新中间content区域的页面,也就是在放一个div在页面上,把html加载到div里,以前类似的实现都是通过Iframe或者js实现,在使用springbo ...

  2. UVA.1584 环状序列

    UVA.1584 环状序列 点我看题面 题意分析 给出你一段换装DNA序列,然后让你输出这段环状序列的字典序最小的序列情况. 字典序字面意思上理解就是按照字典编排的序列,其实也可以理解为按照ASCII ...

  3. Android源码4.4.4_r1下载和编译

    系统:ubuntu 16.04.2 TLS 1.源码下载: sudo apt-get install curl curl https://storage.googleapis.com/git-repo ...

  4. 编译skia静态库时,图片解码库无法注册的问题

    转载:http://www.cnblogs.com/imlucky/archive/2012/08/01/2617851.html 今天编译skia库,增加图片解码库时总是无效.按照此博客的方法修改后 ...

  5. Java nio和io

    当学习了Java NIO和IO的API后,一个问题马上涌入脑海: 我应该何时使用IO,何时使用NIO呢?在本文中,我会尽量清晰地解析Java NIO和IO的差异.它们的使用场景,以及它们如何影响您的代 ...

  6. Itext2.0.8 和freemarker导出pdf

    这个是跟上一篇写的freemarker导出word是一块的.但是关联性不是很大.由于本人技术有限本篇导出也是根据网上大家的做出的demo混合而成.有不足的地方请大家指出.好改正,使以后看到的freem ...

  7. 再续前缘-apache.commons.beanutils的补充

    title: 再续前缘-apache.commons.beanutils的补充 toc: true date: 2016-05-32 02:29:32 categories: 实在技巧 tags: 插 ...

  8. UVA 1635 Irrelevant Elements

    https://vjudge.net/problem/UVA-1635 题意:n个数,每相邻两个求和,最后变成1个数,问这个数除m的余数与第几个数无关 n个数使用次数分别为C(n-1,i) i∈[0, ...

  9. 51Nod 1381 硬币游戏 | 概率(数学期望)

    Input 第一行给出一个整数T,表示有T组数据(1<=T<=10000). 第2行到T+1,每行给出一个整数R.(0< R <= 10,000,000,000) Output ...

  10. [洛谷P3304] [SDOI2013]直径

    洛谷题目链接:[SDOI2013]直径 题目描述 小Q最近学习了一些图论知识.根据课本,有如下定义.树:无回路且连通的无向图,每条边都有正整数的权值来表示其长度.如果一棵树有N个节点,可以证明其有且仅 ...