Node.js 文件操作笔记


const express = require('express')

const fs = require('fs')


/**
 * 同步文件操作
 */
let fd = fs.openSync('h.txt','w')
console.log(fd)

//写入内容
let str = 'cimo'
fs.writeFileSync(fd,str)

//退出文件
fs.closeSync(fd)

/**
 * 异步文件操作
 */
 fs.open('h.txt','w',(err,fd)=>{
    fs.writeFile(fd,'cimo incimo',(err)=>{
        if(!err){
            console.log('写入完成')
            fs.close(fd,()=>{
                console.log('文件关闭完成')
            })
        } else {
            console.log(err)
        }
    })
 })

 console.log(123)

/**
 * 文件流操作
 */

//创建写入流
let ws = fs.createWriteStream('h.txt')

//监听通道打开
ws.once('open',()=>{
    console.log('通道打开')
    ws.write('一 gaio 我里 giao giao oh\n')
    ws.write('一 gaio 我里 giao giao oh\n')
    ws.write('一 gaio 我里 giao giao oh')
    //写入结束
    ws.end()
})

// 监听通道关闭
ws.once('close',()=>{
    console.log('通道关闭')
})

/**
 * 文件读取
 */

 //异步
 fs.readFile('h.txt',(err,data)=>{
    if(!err){
        console.log(data.toString())
    } else {
        console.log('err:',err)
    }
 })

 console.log('异步读取')

 //读取图片后从复制并重命名
 fs.readFile('小火箭.png',(err,data)=>{
    if(!err){
        console.log(data)
        fs.writeFile('大火箭.png',data,(err)=>{
            if(!err){
                console.log('图片读取写入成功')
            } else {
                console.log('err',err)
            }
        })
    } else {
        console.log('err:',err)
    }
 })

/**
 * 文件流读取
 */

 let rs = fs.createReadStream('小火箭.png')
 let ws = fs.createWriteStream('dada火箭.png')

 //监听读取流
 rs.once('open',()=>{
    console.log('读取流打开')
 })

 rs.once('close',()=>{
    console.log('读取流关闭')
 })

//监听写入流
 ws.once('open',()=>{
    console.log('写入流打开')
 })

 ws.once('close',()=>{
    console.log('写入流关闭')
 })

 //将读取的数据用过写入流
 //如果有数据则写入
 rs.on('data',(data)=>{
     ws.write(data)
 })

/**
 * 流操作写法优化 - > 管道操作 -> 将读取流的出口作为写入流的入口
 */
rs.pipe(ws)


你可能感兴趣的:(Node.js,前端)