fileStystem模块

后端语言都有操作文件系统的能力,在nodejs里我们依靠的是fs模块

每种操作的方法基本都有同异步的两种不同方法
 
1.查看文件信息(多用来判断文件是否存在)exists
 
var fs=require('fs');
//异步查询文件信息
fs.stat("../sources/temp.txt",(err,data)=>{
	if(err){
		console.log(err);
	}else{
		console.log(data)
		//判断是否是文件
		console.log(`文件:${data.isFile()}`)
		//判断是否是路径
		console.log(`目录:${data.isDirectory()}`)
	}
})
//同步查询
//fs.statSync("../sources/temp.txt")

console.log(1)

 

2.创建一个目录
//创建一个目录,如果目录已存在的话就会返回错误信息
fs.mkdir("logs",function(err){
	if(err){
		console.log(err);
	}else{
		console.log('success');
	}
})

  

3.写入文件
//给文件写内容,当文件不存在会创建一个文件,第二个参数为写入的内容,每次写入都会覆盖
fs.writeFile('logs/hello.log','hello everyone\n',function(err){
	if(err){
		console.log(err);
	}else{
		console.log('success')
	}
})
//给文件中追加内容
fs.appendFile("logs/hello.log",'hello world\n',function(err){
	if(err){
		console.log(err);
	}else{
		console.log('success')
	}
})

  

4.读取文件内容
//读取文件内容的方法,第二个参数可选,为读取的编码格式
fs.readFile("logs/hello.log",'utf-8',function(err,data){
	if(err){
		console.log(err);
	}else{
		console.log(data)
	}
})

  

5.读取目录内容
//读取目录内容,返回一个数组
fs.readdir("logs",function(err,files){
	if(err){
		console.log(err);
	}else{
		console.log(files)
	}
})

  

6.文件重命名
//重命名方法
fs.rename("logs/hello.log","logs/world.log",function(err){
	if(err){
		console.log(err)
	}else{
		console.log('success')
	}
})

  

7.删除目录、文件
fs.rmdir可以删除目录但是,必须是空目录,fs.unlink可以删除文件,如果我们要删除一个目录及它下面的文件或子目录的话,我们需要先读取出来,删除完成后再进行根目录的删除
 
小练习:创建一个copy复制文件的函数
const fs = require('fs')
const _path = require('path')

let copy = (path,target)=>{
    fs.stat(path,(err)=>{
        if(err){
            console.log('要复制的文件不存在')
        }else{
            let content = fs.readFileSync(path)
            fs.writeFile(target+'/'+_path.basename(path).replace('.','-副本.'),content,(err)=>{
                if(err){console.log('目标目录不存在')}else{
                    console.log('success')
                }
            })
        }
    })
}
copy('./sources/hello.txt','./sources/a')

  

8.fs-extra模块
这是一个第三方的fs模块,需要下载 npm install fs-extra

fs模块上的方法它都有,并且还封装了一些很好用的方法,比如:copy、remove..

posted @ 2017-12-02 16:24  天翊天翊天翊  阅读(218)  评论(0编辑  收藏  举报