Node.js(内置模块fs)

Node.js(内置模块fs)

fs模块(FileSystem)

【fs内置模块:实现I/O操作】

const fs=require('fs');
//所有的文件操作,都有同步和异步之分
//文件操作中,默认都是异步的, 需要同步时,在方法后加Sync

目录操作

fs.mkdir 创建目录

fs.mkdir / fs.mkdirSync:创建文件夹,有Sync的是同步创建,反之没有是异步,想要实现无阻塞的I/O操作,我们一般都是用异步操作完成要处理的事情

// fs.mkdir  创建目录

  //接收参数:
  //path            将创建的目录路径(名称)
  //mode          目录权限(读写权限),默认0777
  //callback      回调,传递异常参数err

//fs.mkdir('./css',function(err){
//  if(err){
//   console.log(err);
//
//   return false;
//  }
// console.log('创建目录成功');
//
//})

fs.readdir 读取目录

fs.readdir / fs.readdirSync:读取文件目录中的内容

// fs.readdir读取目录  把目录下面的文件和文件夹都获取到。

//fs.readdir('html',function(err,data){
//
//    if(err){
//     console.log(err);
//
//     return false;
//   }
//   console.log(data);
//
//})


// let result = fs.readdirSync('./');//=>同步
fs.readdir('./css', (err, result) => {
    if (err) {
        console.log(err);
        return;
    }
    console.log(result);//=>返回的结果是一个数组
});*/

fs.rmdir 删除目录(空目录

fs.rmdir / fs.rmdirSync:删除文件夹

// fs.rmdir  删除目录

//fs.rmdir('t',function(err){//=>删除文件夹必须保证文件夹是空的
//      if(err){
//       console.log(err);
//
//       return false;
//     }
//    console.log('删除目录成功');
//})

// ENOENT: no such file or directory, rmdir      rmdir 这个方法只能删除目录
//fs.rmdir('index.txt',function(err){
//      if(err){
//       console.log(err);
//
//       return false;
//     }
//    console.log('删除目录成功');
//})

文件操作

fs.writeFile 创建写入文件

fs.writeFile / fs.writeFileSync:向文件写入内容(覆盖写入:写入的新内容会替换原有的内容)

// fs.writeFile  创建写入文件

//filename      (String)            文件名称
//data        (String | Buffer)    将要写入的内容,可以使字符串 或 buffer数据。
//options        (Object)           option数组对象,包含:
 //· encoding   (string)            可选值,默认 ‘utf8′,当data使buffer时,该值应该为 ignored。
 //· mode         (Number)        文件读写权限,默认值 438
 //· flag            (String)            默认值 ‘w'
//callback {Function}  回调,传递一个异常参数err。

// 如果已经存在会覆盖
//fs.writeFile('t.txt','你好nodejs 覆盖','utf8',function(err){
//
//   if(err){
//    console.log(err);
//
//    return false;
//   }
//  console.log('写入成功');
//})

fs.appendFile 追加文件

fs.appendFile / fs.appendFileSync:追加写入新内容,原有的内容还在

// fs.appendFile 追加文件
//
//fs.appendFile('t1.txt','这是写入的内容',function(err){
//
//   if(err){
//    console.log(err);
//
//    return false;
//   }
//  console.log('写入成功');
//})



//fs.appendFile('t1.txt','这是写入的内容111\n',function(err){
//
// if(err){
//  console.log(err);
//
//  return false;
// }
// console.log('写入成功');
//})

fs.readFile 读取文件

fs.readFile / fs.readFileSync:读取文件中的内容

// fs.readFile 读取文件

/*
fs.readFile('./less/1.less', 'utf8', (err, result) => {
    //=>不设置UTF-8编码格式,读取出来的是BUFFER格式的数据,设置后读取到的是字符串格式的数据
    if (err) {
        console.log(err);
        return;
    }
    console.log(result);
});*/

//fs.readFile('t1.txt',function(err,data){
//   if(err){
//    console.log(err);
//
//    return false;
//   }
//   //console.log(data);
//
//   console.log(data.toString());
//
//})

fs.rename 重命名

fs.rename / fs.renameSync:重命名文件、剪切文件

// fs.rename 重命名
//1.改名  2.剪切文件

//fs.rename('html/index.html','html/news.html',function(err){
//
//    if(err){
//     console.log(err);
//
//     return false;
//   }
//   console.log('修改名字成功');
//})


//fs.rename('html/css/basic.css','html/style.css',function(err){
//
//     if(err){
//      console.log(err);
//
//      return false;
//    }
//    console.log('剪切成功');
//})

fs.unlink 删除文件

fs.unlink / fs.unlinkSync:删除文件

// fs.unlink删除文件

fs.unlink('index.txt',function(err){

       if(err){
          console.log(err);
          return false;
     }
    console.log('删除文件成功');
})

fs.copyFile 复制文件

fs.copyFile / fs.copyFileSync:拷贝文件到新的位置

//复制
// 本质是: 先读取,再写入
// fs.copyFile("11.txt","aa.txt",err=>{
//     if(err){
//          return console.log(err);
//     }
//         console.log("复制文件成功");
// });

//封装复制文件的方法
// function myCopyfile(src,dest){
//      fs.writeFileSync(dest,fs.readFileSync(src));
// }
// myCopyfile("index.html","text.html");

fs.stat 检测是文件还是目录

fs.stat / fs.statSync:检测是文件还是目录

//fs.stat  检测是文件还是目录

//fs.stat('html',function(err,stats){
//  if(err){
//    console.log(err);
//
//    return false;
//  }
//
//  let res = data.isFile();
//  console.log(res);
//  
//  console.log('文件:'+stats.isFile());
//  console.log('目录:'+stats.isDirectory());
//
//})

//
//fs.stat('index.txt',function(err,stats){
// if(err){
//  console.log(err);
//
//  return false;
// }
//
// console.log('文件:'+stats.isFile());
// console.log('目录:'+stats.isDirectory());
//
//})

fs.exists 判断文件或者目录是否存在

//判断文件或者目录是否存在
// fs.exists("home",exists=>{
//     console.log(exists);  //是否找到指定内容
// });

封装一些方法

1. 删除非空目录

//删除非空目录
/*
    思路:1. 先把目录里的文件删除
          2. 直到该目录成为一个空目录时,直接删除该目录
*/

function removeDir(path){
    //获取到目录
    let data = fs.readdirSync(path);
    // ["ck","1.txt","2.html","33.txt"];

    for(let i = 0; i < data.length; i++){
        //循环判断目录中的每一个内容

        //处理子目录的路径
        let url = path + "/" + data[i];
        /*
            循环1 : url =  "22/ck"
            循环2 : url =  "22/1.txt"
            循环3 : url =  "22/2.txt"
            循环4 : url =  "22/3.txt"
        */
        //获取到详细信息
        let stat = fs.statSync(url);
        if(stat.isDirectory()){ // 如果是目录,继续查找
            removeDir(url);
        }else{ //文件, 删除
            fs.unlinkSync(url); //  path  = 22
        }
    }
    // 当循环结束后,目录成为空目录
    fs.rmdirSync(path);
}

//注意事项:在使用Node.js删除文件时,不会经过回收站
//         在删除前,  切记备份!!!!(备份不要和原件放在同一路径下)
//         以免删除错误,发生不可挽救的损失
removeDir("22");

2. 判断服务器上面有没有upload目录。没有创建这个目录。

//1.判断服务器上面有没有upload目录。没有创建这个目录。   (图片上传)

//要用fs目录必须得引入fs

var fs=require('fs');
//
//fs.stat('upload',function(err,stats){
//
//        if(err){  /*没有这个目录*/
//            fs.mkdir('upload',function(error){
//                if(error){
//
//                    console.log(error);
//                    return false;
//                }
//                console.log('创建成功');
//            })
//        }else{
//            console.log('目录已经存在');
//            console.log(stats.isDirectory());
//        }
//
//})

3. 拿到一个文件夹下面的所有目录

发布了21 篇原创文章 · 获赞 0 · 访问量 93

猜你喜欢

转载自blog.csdn.net/weixin_45368324/article/details/105409030