nodejs(1) fs 和 path

文件的操作

1、读文件

// 使用 require 方法,导入 fs 模块 操作文件
const fs = require('fs')
fs.readFile('./files/11.txt', 'utf-8', (err, dataStr) => {
  // 判断 err 能否转为 true,如果 能,则证明读取文件出错了
  if (err) return console.log('读取文件失败:' + err.message)
  console.log(dataStr)
})
/*
 * fs.readFile(path[, options], callback)接收三个参数
 * path:文件路径【必须】
 * options:文件编码【可选,不选为buffer编码,可以设定‘utf-8’】
 * callback:异步地读取文件的全部内容。【必选】function(err, data) { err【失败】,【data】成功}
 * 如果读取文件成功,则 err 为 null, data 是成功之后的数据
 * err 是 Error 类型的一个对象,console.log(err instanceof Error)
 * console.log(err.message)
 * 如果读取失败,则 err 为一个错误对象, data 为 undefined
 * Buffer 是二进制的数据,只不过在展示的时候,为了方便展示,操作系统,帮我们把 二进制的 Buffer,转换为了 16进制的格式
 * console.log(data instanceof Buffer)
 * console.log(data.toString())
 */ 

2、写入文件

// fs.writeFile(file, data[, options], callback)
const fs = require('fs')

// 参数1: 要把文件写入到哪个路径中
// 参数2: 要写入的内容
// 参数3: 默认为 'utf8'
fs.writeFile('./files/2.txt', '666', err => {
  if (err) return console.log('写入文件失败!' + err.message)
  console.log('写入文件成功!')
})

3、追加内容

// fs.appendFile(path, data[, options], callback)
const fs = require('fs')

// 参数1: 要把文件写入到哪个路径中
// 参数2: 要写入的内容
// 参数3: 默认为 'utf8'
fs.appendFile('./files/3.txt', '\n888', err => {
  if (err) return console.log('追加失败!' + err.message)
  console.log('ok')
})

路径问题

console.log(__dirname) // 文件夹绝对路径
console.log(__filename) // 文件名绝对路径

// 结论:今后在调用 fs 模块,操作文件的时候,如果要提供路径了,一定不要使用相对路径;
// 一定要使用 __dirname 做一层拼接
fs.readFile(__dirname + '/files/1.txt', 'utf-8', (err, dataStr) => {
  if (err) return console.log('读取文件失败:' + err.message)
  console.log(dataStr)
})

fs 和 path 结合使用

1、读取文件信息

// fs.stat(path[, options], callback)
const fs = require('fs')

// 读取文件信息
fs.stat(__dirname + '/files/1.txt', (err, stats) => {
  if (err) return console.log('读取文件信息失败!' + err.message)
  // 获取文件大小   单位是 字节  Byte
  console.log(stats)
  console.log(stats.size)
  // 获取文件的创建时间
  console.log(stats.birthtime)
  // 判断是否是一个文件
  console.log(stats.isFile())
  // 判断是否是目录
  console.log(stats.isDirectory())
})

// 读取路径信息
fs.stat(__dirname, (err, stats) => {
  if (err) return console.log(err.message)
  // 不能直接使用 stats 获取目录的大小
  console.log(stats.size)
})

2、读取指定目录下的所有文件名称

// fs.readdir(path[, options], callback)

const fs = require('fs')
fs.readdir(__dirname, (err, filenames) => {
  if (err) return console.log(err.message)
  console.log(filenames)
})

3、复制文件

// fs.copyFile(src, dest[, flags], callback)

const fs = require('fs')

// 第一个参数:要复制的文件路径
// 第二个参数:要存放的路径
// 参数3: 回调函数,包含一个 err 错误对象
fs.copyFile(__dirname + '/files/1.txt', __dirname + '/files/1-copy.txt', err => {
  if (err) return console.log('复制失败!')
  console.log('ok')
})

4、读文件和path模块的关系

const fs = require('fs')
const path = require('path')

console.log(path.join(__dirname, './files/1.txt'))

// 记住:今后只要涉及到路径片段的拼接,一定要使用 path.join() 方法
fs.readFile(path.join(__dirname, './files/1.txt'), 'utf-8', (err, dataStr) => {
  if (err) return console.log(err.message)
  console.log(dataStr)
})

猜你喜欢

转载自www.cnblogs.com/houfee/p/10281232.html
今日推荐