node2 路径操作文件操作

路径操作

/*
	路径操作
*/

const path =  require('path')

// 获取路径最后一部分
console.log(path.basename('/foo/bar/baz/asdf/quux.html'))
console.log(path.basename('/foo/bar/baz/asdf/quux.html','.html'))

// 获取全路径
console.log(__dirname) // 当前目录 不包括文件
console.log(path.dirname('/foo/bar/baz/asdf/quux')) // 当前目录不包括文件

// 获取扩展名称
console.log(path.extname('index.html')) // .html

// 路径的格式化处理
//path.format() // 把obj->string
//path.parse() // 把string->obj

let obj = path.parse(__filename)
console.log(obj)

let objpath = { root: 'C:\\',
  dir: 'C:\\Users\\kong\\Desktop\\hhhh',
  base: 'hhh.js',
  ext: '.js',
  name: 'hhh' }

let objStr = path.format(objpath)
console.log(objStr)

异步IO

/*
  异步IO
  文件操作
  网络操作

  1定时任务
  2事件处理
  3ajax回调处理
  4文件处理
*/
// 文件操作

const fs = require('fs')

// 异步打开文件
fs.stat('./aaa.txt',(err,stat)=>{
	// 一般回调函数的第一个参数都是错误对象,如果err为null,表示没有错误,否则表示报错了
	if(err) return 
	if(stat.isFile()){
		console.log('文件')
	}else if (stat.isDirectory()){
		console.log('目录')
	}

	// console.log(stat)
	/*
	atime 访问时间
	ctime 修改时间
	mtime 文件数据发生变化的时间
	birthtime 文件创建的时间
	*/
})

// 同步打开文件
let ret = fs.statSync('./aaa.txt')
console.log(ret)
// 读写文件
/*
	读写文件
*/

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

let strpath = path.join(__dirname,'aaa.txt')


fs.readFile(strpath,'utf8',(err,data)=>{
	if(err) return 
	console.log(data)
})

let ret = fs.readFileSync(strpath,'utf8')
console.log(ret)

fs.writeFile('message.txt','Hello Node.js',(err)=>{
	if(err) throw err
	console.log('成功写入并保存')
})
const path = require('path')
const fs = require('fs')

let spath = path.join(__dirname,'../03-source','file.zip')
let dpath = path.join('C:\\Users\\www\Desktop','file.zip')

let readStream = fs.createReadStream(spath)
let writeStream = fs.createWriteStream(dpath)

let num = 1;
readStream.on('data',(chunk)=>{
	num ++ 
	writeStream.write(chunk)
})

readStream.on('end',()=>{
	console.log('文件处理完成' + num)
})

// 简易版
readStream.pipe(writeStream)
/*
	目录操作
	fs.mkdir(path,[,mode],callback)
	fs.mkdirSync(path[,mode])
*/

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

fs.mkdir(path.join(__dirname,'abc'),(err)=>{
	console.log(err)
})

fs.mkdirSync(path.join(__dirname,'hello'))
// 读取目录
fs.readdir(__dirname,(err,arrlist)=>{
	arrlist.forEach((item,index)=>{
		fs.stat(path.join(__dirname,item),(err,stat)=>{
			if(stat.isFile()){
				console.log(item,'文件')
			}else if (stat.isDirectory()){
				console.log(item,'目录')
			}
		})
	})	
})

// 同步读取
let arrlist = fs.readdirSync(__dirname)
arrlist.forEach((item,index)=>{
	fs.stat(path.join(__dirname,item),(err,stat)=>{
		if(stat.isFile()){
			console.log(item,'文件')
		}else if (stat.isDirectory()){
			console.log(item,'目录')
		}
	})
})	

// 删除目录
fs.rmdir(path.join(__dirname,"hello"),(err)=>{
	console.log(err)
})

// 同步删除
fs.rmdirSync(path.join(__dirname,'abc'))