一、 读取文件简单实现
const fs = require('fs')
const path = require('path')
const fileName = path.resolve(__dirname, 'data.log')
// 读取文件内容
fs.readFile(fileName, (err, data) => {
if(err){
console.log(err)
return
}
console.log(data) // 二进制数据
console.log(data.toString())
})
// 写入文件
const content = 'new content \n'
const opt = {
flag: 'a' // 追加写入, 覆盖用 ‘w’
}
fs.writeFile(fileName, content, opt, (err) => {
if(err){
console.log(err)
}
})
// 判断文件是否存在
fs.exists(fileName, (exists) => {
if(err){
console.log(err)
}
})
二、文件流几个场景简单实现
- 标准输入输出
process.stdin.pipe(process.stdout)
命令行输入什么就输出什么
- 网络流
const http = require('http')
const server = http.createServer((req, res) => {
if(req.method === 'POST'){
req.pipe(res)
}
})
server.listen(8002)
请求拿到的直接输出到response
- 拷贝文件
const fs = require('fs')
const path = require('path')
const fileName1 = path.resolve(__dirname, 'data.txt')
const fileName2 = path.resolve(__dirname, 'dataCopy.txt')
const readStream = fs.createReadStream(fileName1)
const writeStream = fs.createWriteStream(fileName2)
readStream.pipe(writeStream)
readStream.on('end', () => console.log('拷贝完成'))
把data.txt通过文件流拷贝到dataCopy.txt
- 网络读取文件
const http = require('http')
const fs = require('fs')
const path = require('path')
const server = http.createServer((req, res) => {
if(req.method === 'GET'){
const fileName = path.resolve(__dirname, 'data.txt')
const stream = fs.createReadStream(fileName)
stream.pipe(res) // 将res作为stream的dest
}
})
server.listen(8002)
把本地data.txt文件写到response返回