fs模块

作者: _hider | 来源:发表于2023-06-27 17:13 被阅读0次
    1. 读取文件

    获得是文件的butter数据(二进制数据),用toString将二进制数据转成正常字符串。

    //异步
    fs.readFile("./text.html", (err, date) => {
      console.log(date.toString());
    });
    
    //同步
    const data = fs.readFileSync("./text.html");
    console.log(data.toString());
    

    要注意的是异步操作不会等待当前异步操作完成后才会执行,而加了Sync的是同步操作,他会等此操完成后才会执行。

    2. 写入文件
    //异步版本的写入
    fs.writeFile("./text.html", "我是写入的内容", (err, data) => {
      if (err) {
        console.log(err);
      } else {
        console.log("文件写入成功");
      }
    });
    
    //同步版本的写入
    fs.writeFileSync("./text.html", "我是同步写入的文件");
    
    3. 删除文件
    //异步操作删除
    fs.unlink("./text.html", (err, data) => {
      if (err) {
        console.log(err);
      } else {
        console.log("删除文件成功");
      }
    });
    
    //同步操作删除
    fs.unlinkSync("./text.html");
    
    4. 创建文件夹
    //异步操作创建文件夹
    fs.mkdir("./public", (err, data) => {
      if (err) {
        console.log(err);
      } else {
        console.log("public文件夹创建成功");
      }
    });
    
    //同步操作创建文件夹
    fs.mkdirSync("./public");
    
    5. 删除文件夹
    //异步操作删除文件夹
    fs.rmdir("./public", (err, data) => {
      if (err) {
        console.log(err);
      } else {
        console.log("删除public文件夹");
      }
    });
    
    //同步操作删除文件夹
    fs.rmdirSync("./public");
    
    6. 获取文件或者文件夹信息
    //获取text.html文件信息
    fs.stat("./text.html", (err, info) => {
      if (err) {
        console.log(err);
      } else {
        // info.isFile() 判断是不是一个文件 返回结果为true
        console.log(info.isFile());
      }
    });
    
    //获取public文件夹信息
    fs.stat("./public", (err, info) => {
      if (err) {
        console.log(err);
      } else {
        // info.isDirectory() 判断是不是一个文件 返回结果为true
        console.log(info.isDirectory());
      }
    });
    

    使用同步操作的话相对于简单:

    //同步操作获得文件信息并判断是不是文件夹
    let file = fs.statSync("./text.html");
    
    if (file.isFile()) {
      console.log("这是一个文件");
    } else if (file.isDirectory()) {
      console.log("只是一个文件夹");
    } else {
      console.log("抱歉这不是一个文件或者文件夹");
    }
    
    7. 读取文件夹里面的所有文件
    //异步读取文件夹里面的所有文件
    fs.readdir("./public", (err, files) => {
      if (err) {
        console.log(err);
      } else {
        // console.log(files); 返回的文件是个数组,可以用forEach循环输出文件名
        files.forEach((x) => {
          console.log("有" + x + "这个文件");
        });
      }
    });
    
    //同步获取文件夹里面的所有文件
    let files = fs.readdirSync("./public");
    console.log(files); //返回的是一个数组
    
    8. 移动并可以重命名文件

    第一个参数是原始文件路径,第二个参数是目标文件路径。
    如果单独只是文件名的话就会把文件重命名,第二个参数如果是目录里面的文件的话他就会把文件移动。

    //异步操作移动并重命名文件
    fs.rename("./text.html", "./public/index.html", (err, data) => {
      if (err) {
        console.log(err);
      } else {
        console.log("已经移动并更改");
      }
    });
    
    // 同步操作移动并重命名文件
    fs.renameSync("./text.html", "./public/index.html");
    
    9. 复制并重命名文件
    //异步复制并重命名文件
    fs.copyFile("./index.html", "./public/index.html", (err) => {
      if (err) {
        console.log(err);
      } else {
        console.log("已经复制并移动");
      }
    });
    
    // 同步操作复制并重命名文件
    fs.copyFileSync("./index.html", "./public/index.html");
    

    相关文章

      网友评论

          本文标题:fs模块

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