美文网首页Web
Node.js的学习总结(三)

Node.js的学习总结(三)

作者: 追逐_chase | 来源:发表于2019-12-16 16:09 被阅读0次
    node.jpeg

    fs文件模块

    • 需要手动导入才可以使用
    //1.导入文件模块
    let fs = require("fs");
    
    1. 查看文件的状态 fs.stat(path[, options], callback) 异步方法

    同步方法 fs.statSync(path[, options]) 返回的就是一个 stats的状态

    fs.stat(__filename,function (err,stats) {
        // 获取错误
        console.log("err---",err);
    
        //获取成功的状态
        console.log("stats---",stats);
        //birthtime 文件的创建时间
        //mtime 文件的修改时间
    
        if (stats.isFile()){
            console.log("当前对应的是一个文件");
        }else if (stats.isDirectoty) {
    
            console.log("当前路径对应的是一个文件夹");
        }
    });
    
    console.log("2");
    
    image.png

    2.文件的读取

    • fs.readFile(path[, options], callback) 异步方法
    • fs.readFileSync(path[, options]) 同步方法
    //1导入文件模块
    let fs = require("fs");
    //导入路径模块
    let  path = require("path");
    
    // __dirname 绝对路径文件夹
    // join 拼接路径
    let filePath  = path.join(__dirname,"data.txt");
    
    //2.读取文件
    fs.readFile(filePath,"utf8",function (err,data) {
    
        //注意,如果 第二个参数utf8 不传递的话,返回的就是二进制数据
        // 传递的话就返回的事-字符串
    
        if (!err){
            //读取成功后,获取的是二进制数据
            console.log("读取成功",data);
        }else {
            console.log("读取失败",err);
        }
    
    });
    
    1. 写入文件 数据
    • fs.writeFile(file, data[, options], callback) 异步方法
    • fs.writeFileSync(file, data[, options]) 同步方法
    //导入文件模块
    let fs = require("fs");
    //导入路径模块
    let path = require("path");
    //拼接路径
    let filePath =  path.join(__dirname,"cc.txt");
    
    // 异步 写入数据
    //参数一:写入的文件路径
    //参数二:写入的内容
    //参数三:编码方式
    //参数四:失败的回调
     fs.writeFile(filePath,"我是CC","utf8",function (err) {
       console.log(err);
       if (err){
           throw new Error("写入失败");
       }else {
           console.log("写入成功");
       }
        
    });
    
     //同步写入数据
    let fileSyncPath =  path.join(__dirname,"Sync.txt");
    
    let res = fs.writeFileSync(fileSyncPath,"同步写入数据","utf8");
    
    console.log(res);
    
    
    1. 向文件中,添加心的数据
    • fs.appendFile(path, data[, options], callback)
    • fs.appendFileSync(path, data[, options])
    //导入文件模块
    let fs = require("fs");
    //导入路径模块
    let path = require("path");
    //拼接路径
    let filePath = path.join(__dirname,"data.txt");
    // 异步 向文件中添加数据
    fs.appendFile(filePath,"\n添加一个字符串数据","utf8",function (err) {
        console.log(err);
    });
    
    
    1. 大文件操作数据分批读取分批写入
    • fs.createReadStream(path[, options]) 分批读取
    // 1.分批读取数据
    // 导入模块
    let fs = require("fs");
    let path = require("path");
    
    //获取文件路径
    let filePath = path.join(__dirname,"data.txt");
    
     //创建一个读取流
    //参数二:是一个配合对象
    /**
     *  encoding: 编码的方式(默认是null)
     *
     *  highWaterMark:每次读取的多少  默认是64kb
     *
     */
     let readStream =  fs.createReadStream(filePath,{
        encoding:"utf8",
        highWaterMark:1
    
     });
    //监听添加的事件
    readStream.on("open",function () {
    
        console.log("表示数据流和文件建立关系成功");
        
    });
    
    readStream.on("error",function () {
        console.log("表示数据流和文件建立关系失败");
    });
    
    readStream.on("data",function (data) {
        console.log("表示通过读取流从文件中读取到了数据", data);
    });
    
    readStream.on("close",function () {
        console.log("表示数据流断开了和文件的关系, 并且数据已经读取完毕了");
    });
    
    • fs.createWriteStream(path[, options]) 分批写入
    let fs = require("fs");
    
    let path = require("path");
    
    //创建一个文件路径
    let writeFilePath = path.join(__dirname,"write.txt");
    //创建写入流
    let writeSream = fs.createWriteStream(writeFilePath,{
        encoding:"utf8",
    });
    
    // 监听写入流的事件
    writeSream.on("open", function () {
        console.log("表示数据流和文件建立关系成功");
    });
    writeSream.on("error", function () {
        console.log("表示数据流和文件建立关系失败");
    });
    writeSream.on("close", function () {
        console.log("表示数据流断开了和文件的关系");
    });
    
    let data = "www.ezcarry.com";
    let index= 0;
    
    let timer = setInterval(function () {
        let str = data[index];
        index ++;
        //写入数据
        console.log(str);
        writeSream.write(str);
        if (index === data.length){
            //结束写入数据
            writeSream.end();
            clearInterval(timer);
        }
    
    },3000);
    
    
    

    6.操作文件目录

    • fs.mkdir(path[, mode], callback)创建文件目录
    • fs.mkdirSync(path[, mode])
    //导入模块
    let fs = require("fs");
    let path = require("path");
    //拼接路径
    let str = path.join(__dirname,"abc");
    //1.创建文件目录
    fs.mkdir(str,function (err) {
        if (err){
            throw new Error("创建错误");
    
        } else {
            console.log("创建成功");
        }
    });
    
    // 2.移除文件目录
    
    fs.rmdir(str,function (err) {
        if (err){
    
            throw new Error("移除文件失败");
    
        } else {
            console.log("删除目录成功");
        }
    
    });
    
    //3.读取文件目录
    
    fs.readdir(__dirname,function (err,files) {
    
        if (err){
            throw new Error("读取文件目录失败");
        } else {
          //files是一个数组
            files.forEach(function (obj) {
               let filePath = path.join(__dirname,obj);
               let stats = fs.statSync(filePath);
               if (stats.isFile()){
                   console.log("是一个文件",obj);
               }else if (stats.isDirectory()){
                   console.log("是一个文件目录",obj);
               }
            });
    
    
        }
    
        
    });
    
    

    创建 结构目录层次

    //导入模块
    let fs = require("fs");
    let path = require("path");
    
    //创建一个类
    
    class CreateProject {
         constructor(rootPath,projectName){
             this.rootPath = rootPath;
             this.projectName = projectName;
             this.subFiles = ["images","css","js","index.html"];
         }
    
         initProject(){
             //1.创建站点文件夹
             let projectPath = path.join(this.rootPath,this.projectName);
             //同步创建站点文件目录
             fs.mkdirSync(projectPath);
    
             //2.创建子目录和文件
             this.subFiles.forEach(function (item) {
                 
                 if (path.extname(item) === "") {
                     let dirPath = path.join(projectPath,item);
                     fs.mkdirSync(dirPath);
    
                 }else {
                     let filePath = path.join(projectPath,item);
                     fs.writeFileSync(filePath);
    
                 }
                 
             });
    
         }
    }
    
    
    let cp = new  CreateProject(__dirname,"Ezcarry");
    cp.initProject();
    
    
    image.png

    相关文章

      网友评论

        本文标题:Node.js的学习总结(三)

        本文链接:https://www.haomeiwen.com/subject/ovkdnctx.html