node.js常用内置模块--File System

2020-12-17  本文已影响0人  31313_iOS

File System表示文件系统, fs为它的缩写。这里只简单使用常用的方法,更多的使用方法请参阅官网File System

对于文件的操作,大多数API都提供了三种方式:

一、 引入方式

const fs = require('fs')

二、文件三种操作方式

假设有一个名为 temp.txt的文件,里面内容为:

Hello Passer! Let's learn node.js File System !
const state = fs.statSync('./temp.txt')
console.log(state);
console.log('--------分割线--------');
fs.stat('./temp.txt', (err, state) => {
   if (err) {
      console.log(err);
      return
   }
   console.log(state);
})
console.log('--------分割线--------');
fs.promises.stat('./temp.txt').then(state => {
   console.log(state);
}).catch(er => {
   console.log(err);
})

console.log('--------分割线--------');

三、文件描述符

Node.js 抽象出操作系统之间的特定差异,并为所有打开的文件分配一个数字型的文件描述符,一旦被分配,则文件描述符可用于从文件读取数据、向文件写入数据、或请求关于文件的信息。
获取文件描述符的方法: fs.open()

// 获取文件描述符
fs.open('./temp.txt', 'r', (err, fd) => {
   console.log(fd);//30
})

当获取到文件描述符以后可以根据描述符读取文件信息

 // 根据文件描述符读取文件信息
 fs.fstat(30, (err, state) => {
     console.log(state)
  })

四、操作文件内容

我们要操作文件的内容,则需要借助一下API来实现:

1. 文件读取
// 文件读取
fs.readFile('./temp.txt', (err, data) => {
   console.log(data); //<Buffer 48 65 6c 6c 6f 20 50 61 73 73 65 72 21 20 4c 65 74 27 73 20 6c 65 61 72 6e 20 6e 6f 64 65 2e 6a 73 20 46 69 6c 65 20 53 79 73 74 65 6d 20 21>

读取文件options可以接收encoding用于设置读取文件的内容编码方式,这也就是为什么上面的输出是Buffer。

设置读取文件内容的编码方式

fs.readFile('./temp.txt',{encoding:'utf-8'}, (err, data) => {
   console.log(data); //Hello Passer! Let's learn node.js File System !
})

2. 文件写入
fs.writeFile('./temp.txt', 'hahaha', {flag: 'w+'}, err => {
   if (err) {
      console.log('写入文件失败=', err);
   } else {
      console.log('写入文件成功');
   }
})

hahaha为写入文件里面的内容,上面的方式会把原来的文件的内容覆盖。原因是{flag: 'w+'}.

flag的值有很多:快速查看

五、文件夹的操作

1. 创建文件夹

创建文件夹可以使用fs.mkdir()或者fs.mkdirSync()
比如创建一个名为home的文件夹,

const dirName = './home'
// 判断是否存在这个文件夹
if (!fs.existsSync(dirName)) {
   //创建文件夹
   fs.mkdir(dirName, er => {
      console.log(er);
   })
} else {
   console.log('已经存在了');
}

fs.existsSync(dirName)是判断这个文件夹是否已经存在

2.读取文件夹的内容

读取文件夹的内容可以使用fs.readdir(path[, options], callback)或者fs.readdirSync(path[, options])

//获取文件夹下的所有文件不包含子文件夹的文件
fs.readdir(dirName,{ withFileTypes: true }, (err, files) =>{
   console.log(files); //[ Dirent { name: 'eeee.js', [Symbol(type)]: 1 } ]
})

3.文件夹的重命名

文件夹的重命名使用 fs.rename(oldPath, newPath, callback)或者fs.renameSync(oldPath, newPath)

fs.rename(dirName, './passer33', er => {
   console.log(er);
})

这里就把原来的home改名为passer33.

这里只简单使用常用的方法,更多的使用方法请参阅官网File System

上一篇 下一篇

猜你喜欢

热点阅读