node.js 里fs模块

常用的功能

实现文件的读写 目录的操作

- 同步和异步共存 ,有异步不用同步

- fs.readFile 都不能读取比运行内存大的文件,如果文件偏大也不会使用readFile方法
- 文件大分流读取,stream

- 引入fs模块

- let fs=require('fs')

同步读取文件

-fs.readFileSync('路径',utf8);

let result=fs.readFileSync('./1.txt','utf8');

异步读取文件,用参数err捕获错误

- fs.readFile('路径','utf8',function(){})

fs.readFile('./name.txt','utf8',function(err,data){
if(err){
console.log(err)
}else{
console.log(data)
}
})

同步写入文件

- fs.writeFileSync("路径",写入的数据)

fs.writeFileSync("./1.txt",JSON.stringify({name:1}))

异步写入文件

- fs.writeFile('路径',写入的数据,callback)

fs.writeFile('./1.txt','aaaaa',function (err) {
if(err){
console.log(err);
}
})

读写文件写一个拷贝实例

let fs=require("fs");
//同步拷贝
function copySync(source,target){
//同步读取
let result=fs.readFileSync(source,'utf8');
//同步写入
fs.writeFileSync(target,result);
}
copySync("./age.txt",'./1.txt');

//异步拷贝

function copy(sourse,target,callback){
//异步读取
fs.readFile(sourse,'utf8',function(err,data){
if(err){
return callback(err)
}else{
//异步写入
fs.writeFile(target,data,callback)
}
});
};
copy('./name.txt','./ss.txt',function(err){
if(err) return console.log(err);
console.log('拷贝成功')
})

判断文件存不存在

- fs.existsSync('文件的路径')

stat方法

fs.stat('文件路径',function (err,stat) {

stat.isDirectory 看是不是文件夹
stat.isFile 看是不是文件

})

删除文件夹

- fs.rmdir('文件夹路径',function(){})

删除文件

- fs.unlink('文件路径',function(){})

//判断文件存不存在

if(fs.existsSync('./b')){
fs.stat('./b',function (err,stat) {
//stat中的time是用来做服务器缓存
//stat.isDirectory看是不是文件夹 stat.isFile看是不是文件
if(stat.isDirectory()){
//删除文件夹
fs.rmdir('./b',function(){})
}else{
//删除文件
fs.unlink('./b',function(){});
}
})
}

利用递归写一个文件夹依次创建

function md(url) {
let paths=url.split('/'); //将a/b/c拆分成数组['a','b','c']
let index=0;
function make(path){
if(index===paths.length+1){ // 如果到终点,停止递归
return false;
}
if(!fs.existsSync(path)){ //不存在
//创建文件夹
fs.mkdir(path,function () {
make(paths.slice(0,++index).join('/'))
})
}else{ //存在
make(paths.slice(0,++index).join('/'))
}
}
make(paths[index++]) //先取出第一个
}
md('a/b/c/d');

最新文章

  1. IPC-管道
  2. Programming Assignment 5: Kd-Trees
  3. bzoj3136
  4. C#调用webService的几种方法
  5. 弹出框页面中使用jquery.validate验证控件
  6. 转:struct sockaddr与struct sockaddr_in ,struct sockaddr_un的区别和联系
  7. 敏捷开发-Scrum 真实
  8. 第二章App框架设计与重构
  9. Python学习一:Python简介
  10. .Net Mvc Automated Migration 数据迁移
  11. 《并行程序设计导论》——OpenMP
  12. pygame事件之——控制物体(飞机)的移动
  13. HTML基础-------HTML标签(1)
  14. package.json中 npm依赖包版本前的符号的意义
  15. GOQTTemplate简单介绍
  16. java.lang.IllegalArgumentException: Document base XXX does not exist or is not a readable directory解决方法
  17. 如何将QT的pro图标修改的更显著一些
  18. mariadb多实例搭建
  19. HDU 3926 并查集 图同构简单判断 STL
  20. 使用matplotlib绘图(四)之散点图

热门文章

  1. 3624: [Apio2008]免费道路
  2. poj 3761 bubble sort (排列组合)
  3. Mybatis框架分析
  4. KNN算法--python实现
  5. 19. leetcode 100. Same Tree
  6. ue4 C++ 编程 通过三个点的位置算出夹角
  7. OpenOfice将offic转为pdf并且在web显示
  8. POJ 2479 Maximum sum 解题报告
  9. 嵌入式GPIO接口及操作(一)
  10. JAVA WEB主流开发工具下载集