小生愛

  


            // 文件系统模块 负责读写文件
            let fs = require('fs')

            let log = (...value) => console.log(...value)

            // readFile(异步读取的文件, 'utf-8', (err, data) => {} )
            // 如果不给 utf-8 默认输出 Buffer 格式
            fs.readFile('t.txt', 'utf-8', (err, data) => {
              if (err) {
                log(err)
              } else {
                log(data)
              }
            })




            // 以默认格式 Buffer 读取文件
            fs.readFile('t.txt', (err, data) => {
              if (err) {
                log(err)
              } else {
                // 默认返回 Buffer 格式数据
                // 本例中返回 <Buffer e6 b5 8b e8 af 95 e6 95 b0 e6 8d ae>
                // 格式转换使用 toString()
                log(data)
                // 文件大小 xxx字节
                log(data.length)
                // Buffer 格式转成普通字符
                data.toString()
                // 字符串转 Buffer格式
                new Buffer('小花')
                // Buffer格式转 Base64
                new Buffer('小花').toString('base64')
                // Base64 转普通字符串
                new Buffer('base64格式的字符串', 'base64').toString()
              }
            })




            // 读取 二进制文件
            fs.readFile('./images/lx1.png', (err, data) => {
              if (err) {
                log(err)
              } else {
                // 图片字节数
                data.length 
                // Buffer -> base64
                new Buffer(data).toString('base64')
              }
            })




            // 同步读取模式 不接收回调函数 直接返回读取的内容
            // readFileSync(文件): 同步读取文件 默认返回 Buffer格式
            fs.readFileSync('t.txt')
            // 给 utf-8格式以后 返回 普通文本
            fs.readFileSync('t.txt', 'utf-8')





            let t1 = '我是要被写入的文本.'
            // writeFile(文件名, 写入内容, 回调函数只有一个err参数)
            fs.writeFile('newFile.txt', t1, err => {
              if (err) {
                log(err)
              } else {
                log('写入成功.')
              }
            })
    



            // 同步方式写入数据 没有回调函数
            fs.writeFileSync('newFileSync.txt', t1)



            
            // stat 获取文件大小 创建时间 是否是目录 文件等信息
            fs.stat('t.txt', (err, stat) => {
              if (err) {
                log(err)
              } else {
                // 是否是文件
                stat.isFile()
                // 是否是目录
                stat.isDirectory()
                if (stat.isFile()) {
                  // 文件大小
                  stat.size
                  // 创建时间
                  stat.birthtime
                  // 修改时间
                  stat.mtime
                }
              }
            })




            // 同步读取文件 没有回调函数 直接返回文件信息对象
            fs.statSync('t.txt')
            



            // readFile 读文件
            fs.readFile('m.mp4', (err, data) => {
              if (err) {
                log(err)
              } else {
                // writeFile 把读取的文件内容 写入到m2.mp4 
                fs.writeFile('m2.mp4', data, err => {
                  if (err) {
                    log(err) 
                  } else {
                    log('写入成功.')
                  }
                })
              }
            })




            // 
            /**
             *  readdir(文件路径, fn(err, files))
                  files: 以arr形式返回读取的目录文件列表
            */
            fs.readdir('文件路径', (err, files) => {
              
            })