fs是file-system的简写,文件系统的意思。在Node中如果想要进行文件操作,就必须引入fs这个核心模块。

引入

const fs = require('fs')

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

  • path:要读取的文件路径
  • options:可选
    • encoding,指定字符编码
  • callback:回调函数,有两个参数,err和data
    • err:读取失败返回错误对象,读取成功返回null
    • data:读取成功返回读到的数据,否则返回undefined

比如文件路径错误时:err打印出错误对象,data为undefined

const fs = require('fs')

fs.readFile('./1.txt', function (err, data) {
console.log(err)
console.log(data)
}) //{ [Error: ENOENT: no such file or directory, open './1.txt'] errno: -2, code: 'ENOENT', syscall: 'open', path: './1.txt' }
// undefined

文件路径正常且读取成功时:

// null
// <Buffer 68 65 6c 6c 6f>

1.txt中文件读取成功并返回了buffer。文件中原本存储的是二进制数据0和1,二进制转为16进制即buffer。如果想转成我们认识的字符,可以通过toString()方法:

const fs = require('fs')

fs.readFile('./1.txt', function (err, data) {
console.log(data.toString())
}) // hello

或者通过字符编码

const fs = require('fs')

fs.readFile('./1.txt', 'utf8', function (err, data) {
console.log(data)
}) // hello

在读文件时建议做容错,避免读取错误data取不到报错

fs.readFile('./1.txt', function (err, data) {
if (err) {
console.log(err)
} else {
console.log(data.toString())
}
})

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

  • file:要写入的文件路径
  • data:要写入的内容
  • options:可选
  • callback:回调函数
    • err:写入成功时为null,写入错误时为错误对象
fs.writeFile('./2.txt', '你好', function (err) {
if (err) {
console.log(err)
} else {
console.log('写入成功')
}
})

如果当前目录中有2.txt,会写入“你好”,如果当前目录中没有这个文件,会创建文件并写入

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

  • path:路径
  • option:可选
  • callback:回调函数
    • err
    • files 目录中文件名的数组

读取目录的内容

const fs = require('fs')
fs.readdir('/Users/lianglanlan/Desktop/code/study/node/www', (err, files) => {
if (err) {
return console.log('目录不存在')
}
console.log(files) //[ 'a.txt', 'apple', 'index.html', 'index1.html' ]
})

fs.existsSync(path)

  • path:路径
  • 返回值:布尔类型

如果路径存在,返回true,否则返回false

const fs = require('fs')
if (fs.existsSync('./1.txt')) {
console.log('该路径已存在');
}

fs.statSync(path[, options])

  • path:路径

返回fs.stats类

fs.stats类

提供关于文件的信息

stats.isDirectory()

如果是目录,则返回true

Node.js核心模块-fs文件系统的更多相关文章

  1. node.js核心模块

    全局对象 global 是全局变量的宿主 全局变量 在最外层定义的 全局对象的属性 隐士定义的变量(未定义直接赋值的变量) 当定义一个全局变量时 这个变量同时也会成为全局对象的属性 反之亦然 注意: ...

  2. node.js常用的fs文件系统

    fs文件系统模块对于系统文件及目录进行一些读写操作. 模块中的方法均有异步和同步版本,例如读取文件内容的函数有异步的 fs.readFile() 和同步的 fs.readFileSync(). 异步的 ...

  3. Node.js核心模块-http

    通过node中的http模块可以创建编写服务器 引入 const http = require('http') http举例使用: const http = require('http') //引入 ...

  4. 10.Node.js核心模块

    1.全局对象2.常用工具3.事件机制4.文件系统访问5.HTTP服务与客户端 一.全局对象(Global Object), 与window对象一样 process ==> 全局变量, 描述当前N ...

  5. Node.js核心模块_全局变量、util学习

    全局对象 javascript的全局对象是window,他及其所有属性都可以在程序的任何地方访问.即全局变量. 而在node中全局对象是global,所有全局变量都是global对象的属性,包括其本身 ...

  6. Node.js核心模块API之文件操作

    参考:https://www.runoob.com/nodejs/nodejs-fs.html 异步I/O 1,文件操作 2,网络操作 在浏览器中也存在异步操作 1,定时任务 2,事件处理 3,Aja ...

  7. Node.js中的fs文件系统

    fs.stat 检测是文件还是目录 fs.mkdir 创建目录 fs.writeFile 创建写入文件 fs.appendFile 追加文件 fs.readFile 读取文件 fs.readdir 读 ...

  8. Node.js核心模块-net

    net.Socket 类 socket.remotePort 访问服务器的远程端口 const http = require('http'); const server = http.createSe ...

  9. Node.js核心入门

    前言: 因为以前学习Node.js并没有真正意义上的去学习它,而是粗略的学习了npm的常用命令和Node.js一些模块化的语法,因此昨天花了一天的时间看了<Node.js开发指南>一书.通 ...

随机推荐

  1. 整合dubbo的依赖

    <!-- 版本信息 --> <properties> <dubbo.version>2.7.3</dubbo.version> <maven-ja ...

  2. PostMan向企业微信机器人传送数据测试

    1 在企业微信中创建机器人  获取:webhook 地址 2.在Postman软件中创建Post文件 Post文件请求类型要与机器人所接受的类型一致.Get  或者 Post Url地址为上面webh ...

  3. 最大连续和(dp复习)

    最大连续和:给出一段序列,选出其中连续且非空的一段使得这段和最大. stdin: 7 2 -4 3 -1 2 -4 3 stdout: 4 状态转移方程:dp[i]=max(dp[i-1]+a[i], ...

  4. Codeforces_846

    A.简单dp. #include<bits/stdc++.h> using namespace std; ],dp[][] = {}; int main() { ios::sync_wit ...

  5. ARTS Week 8

    Dec 16, 2019 ~ Dec 22, 2019 Algorithm Problem 53 Maximum Subarray 最大子数组 题目链接 题目描述:给定一个数组,在所有连续的子数组中, ...

  6. 数据算法 --hadoop/spark数据处理技巧 --(9.基于内容的电影推荐 10. 使用马尔科夫模型的智能邮件营销)

    九.基于内容的电影推荐 在基于内容的推荐系统中,我们得到的关于内容的信息越多,算法就会越复杂(设计的变量更多),不过推荐也会更准确,更合理. 本次基于评分,提供一个3阶段的MR解决方案来实现电影推荐. ...

  7. .NET Core之单元测试(三):Mock框架Moq的使用

    编写一个API 新增一个接口 public interface IFoo { bool Ping(string ip); } 接口实现 public class Foo : IFoo { public ...

  8. 杭电-------2044一只小蜜蜂(C语言写)

    #include<stdio.h> ] = { }; long long divide(int n) { ) { ; } ) { return a[n]; } ) + divide(n - ...

  9. mybatis缓存,包含一级缓存与二级缓存,包括ehcache二级缓存

    一,引言 首先我们要明白一点,缓存所做的一切都是为了提高性能.明白了这一点下面我们开始进入正题. 二,mybatis缓存概要 ①.mybatis的缓存有两种,分别是一级缓存和二级缓存.两者都属于查询缓 ...

  10. 【转载】s19文件格式详解

    来源:http://blog.csdn.net/xxxl/article/details/19494187 1.概述 为了在不同的计算机平台之间传输程序代码和数据,摩托罗拉将程序和数据文件以一种可打印 ...