Node.js 从入门到放弃(三)

fs模块

import fs from 'fs'

// fs模块常用的方法
fs.writeFile()    // 写入文件
fs.appendFile()	  // 追加内容的写入文件
fs.readFile()	  // 读文件,读取的数据为buffer类型
fs.unlink()		  // 删除文件
fs.rename()		  // 重命名或剪切文件
fs.stat()	      // 判断文件还是目录
fs.readdir()	  // 获取指定目录下的文件名列表
fs.mkdir()		  // 创建目录
fs.rmdir()		  // 删除目录
fs.createReadStream() // 通过流的方式读取文件
fs.createWriteStream() // 通过流的方式写入文件
1. writeFile 方法

参数1: 写入的文件名称,可指定具体路径,若指定具体路径,路径的文件目录必须存在,否则会报错
参数2: 写入文件的内容
参数3: 回调函数
调用该方法后,会在当前目录创建一个index.txt文件,若文件已存在,则删除该文件并重新创建,文件的内容为:Node.js 从入门到放弃。

fs.writeFile('index.txt', 'Node.js 从入门到放弃', err => {
    if (err) {
        console.log(err)
        return
    }
    console.log('写入文件成功!')
})
2. appendFile 方法

参数1: 写入的文件名称,可指定具体路径,若指定具体路径,路径的文件目录必须存在,否则会报错
参数2: 写入文件的内容
参数3: 回调函数
调用该方法后,会在当前目录创建一个index.txt文件,若文件已存在,不会删除文件,而是在原文件的基础上添加内容,文件的内容为:Node.js 从入门到放弃。调用两次则文件的内容为:Node.js 从入门到放弃Node.js 从入门到放弃。

fs.appendFile('index.txt', 'Node.js 从入门到放弃', err => {
    if (err) {
        console.log(err)
        return
    }
    console.log('追加内容的写入文件成功!')
})
3. readFile方法

参数1: 指定读取的文件,若文件不存在,会报错
参数2: 回调函数
调用该方法后,会读取指定的文件内容,由回调函数第二个参数返回,类型为buffer,调用toString方法以便在控制台显示打印的日志内容。

fs.readFile('index.txt', (err, data) => {
        if (err) {
        console.log(err)
        return
    }
    console.log('读文件成功!', data.toString())
})
4. unlink方法

参数1: 指定删除的文件,若文件不存在,会报错
参数2: 回调函数
调用该方法后,会删除指定的文件。

fs.unlink('index.txt', err => {
    if (err) {
        console.log(err)
        return
    }
    console.log('删除文件成功!')
})
5. rename方法

参数1: 旧文件名称
参数2: 新文件名称
参数3: 回调函数
调用该方法后,若新旧文件在同一目录,则重命名文件名称,若新旧文件不在同一目录,则剪切文件。若旧文件原本就不存在,会报错;指定具体的目录时,若目录不存在则报错。

fs.rename('index.txt', 'news/css.txt', err => {
    if (err) {
        console.log(err)
        return
    }
    console.log('重命名文件成功!')
})
6. stat 方法

参数1: 指定的文件或目录
参数3: 回调函数
调用该方法,可判断文件或目录,若指定的文件或目录不存在,则报错。

fs.stat('index.txt', (err, stats) => {
    if (err) {
        console.log(err)
        return
    }
    console.log('文件:', stats.isFile())		// 文件:true
    console.log('目录:', stats.isDirectory())	// 目录:false
})
7. readdir 方法

参数1: 指定的目录,可指定具体路径,若指定具体路径,路径的文件目录必须存在,否则会报错
参数2: 回调函数
调用该方法,可创建指定的目录。

fs.readdir('news', (err, data) => {
    if (err) {
        console.log(err)
        return
    }
    console.log('读目录成功!', data)		// 读目录成功! [news.text, new.css, other]
})
8. mkdir 方法

参数1: 指定的目录名称
参数2: 回调函数
调用该方法,创建指定的目录。

fs.mkdir('news', err => {
        if (err) {
        console.log(err)
        return
    }
    console.log('创建文件夹成功!')
})
9. rmdir 方法

参数1: 指定的目录
参数2: 回调函数
调用该方法,删除指定的目录,若指定的目录不存在或指定目录存在内容,则会报错。

fs.rmdir('t', err => {
        if (err) {
        console.log(err)
        return
    }
    console.log('删除文件夹成功!')
})
10. createReadStream 方法

当文件比较大时,readFile方法读文件会比较慢,因为readFile一次性读完,性能不佳,建议使用createReadStream方法通过流的方式读取文件。

const readStream = fs.createReadStream('read.txt')
let str = ''
let count = 0	// 记录读取的次数

readStream.on('data', data => {		// 文件流的方式读取数据时是分块读取
    str+=data
    count++
})

readStream.on('end', () => {
    console.log('读文件成功!')
    console.log(str)
    console.log(count)
})

readStream.on('error', () => {
    console.log('读文件失败!')
})
11. createWriteStream 方法

当文件比较大时,writeFile方法写文件会比较慢,因为writeFile一次性写完,性能不佳,建议使用createWriteStream方法通过流的方式写入文件。

const writeStream = fs.createWriteStream('write.txt')

for (let i = 0; i < 1000; i++) {
    writeStream.write('Node.js 从入门到放弃', 'utf8')
}


writeStream.end()

writeStream.on('finish', () => {
    console.log('写入文件成功!')
})

writeStream.on('err', () => {
    console.log('写入文件失败!')
})

通过读文件流pipe方法,可将读取的文件内容复制到指定的文件,如下,将read.txt文件的内容复制到ok.txt文件,若ok.txt文件不存在,则创建ok.txt文件。

const readStream = fs.createReadStream('read.txt')
const writeStream = fs.createWriteStream('ok.txt')
readStream.pipe(writeStream)
小试牛刀

需求1: 判断当前目录是否有upload文件夹,若没有则创建upload文件夹

fs.readdir('./', (err, files) => {
    if (err) {
        console.log('获取当前目录文件列表失败!')
        return
    }
    const upload = files.find(file => file === 'upload')
    if (!upload) {
        fs.mkdir('upload', err => {})
    } else {
        console.log('upload目录已存在')
    }
})

需求2: 获取当前目录下的所有文件,但不包含目录

fs.readdir('./', (err, files) => {
    if (err) {
        console.log('获取当前目录文件列表失败!')
        return
    }
    const result = files.filter(file => fs.statSync(file).isFile())
    console.log('当前目录下的所有文件', result)
})
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的Node.js入门教程: 1. 安装Node.js:首先,你需要在你的电脑上安装Node.js。你可以从官方网站(https://nodejs.org/en/)下载适合你系统的安装程序。安装完成后,打开终端(Mac和Linux)或命令提示符(Windows)并输入“node -v”来验证安装是否成功。 2. 编写一个简单的Node.js程序:使用你喜欢的文本编辑器打开一个新文件,将以下代码粘贴到文件中: ``` console.log("Hello, World!"); ``` 保存文件并将其命名为“app.js”。接下来,打开终端或命令提示符,并进入你保存文件的目录。输入“node app.js”并按下回车键,你将看到“Hello, World!”在终端或命令提示符中输出。 3. 使用Node.js创建Web服务器:Node.js可以用来创建Web服务器。以下是一个简单的例子: ``` const http = require('http'); const server = http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello, World!\n'); }); server.listen(3000, () => { console.log('Server running at http://localhost:3000/'); }); ``` 保存文件并将其命名为“server.js”。接下来,打开终端或命令提示符,并进入你保存文件的目录。输入“node server.js”并按下回车键,你将看到“Server running at http://localhost:3000/”在终端或命令提示符中输出。现在你可以在你的Web浏览器中访问“http://localhost:3000/”并看到“Hello, World!”。 这只是一个简单的入门教程,Node.js有很多其他的功能和用法。如果你想深入了解Node.js,请查看官方文档(https://nodejs.org/en/docs/)和其他教程。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值