zoukankan      html  css  js  c++  java
  • File System的简单操作

    在进行这些操作之前,需要在js文件中导入fs模块

    const fs = require("fs");
    • const是定义一个常量,比较特殊的是,使用const定义时必须赋值,一旦被赋值就不能再修改。

    一、操作文件夹

    • 创建文件夹
      • fs.mkdir("test", function(err) {
            if (err) throw err;
            console.log("创建成功");
        })
    • 删除文件夹
      • fs.rmdir("test", err => {
            if (err) throw err;
            console.log("删除成功");
        })
    • 判断文件夹是否存在
      • exists方法现在已经不推荐使用了。
      • fs.exists("test", (exists)=> {
            if (exists) {
                console.log("存在");
            } else {
                console.log("不存在");
            }
        })
      • access方法在有的nodejs版本中需要写成  fs.constants.F_OK
      • fs.access('test', fs.constants.F_OK, (err) => {
            if(err) {
                console.log("文件夹不存在");
                return;
            }
            console.log("文件夹存在");
        })

    二、操作文件

    • 写入文件
      • fs.writeFile("123.txt",  "hello word", err => {
            if(err) throw err;
        })
    • 追加文字
      • fs.appendFile("123.txt", "啦啦", err => {
            if(err) throw err;
        })
    • 修改文件名
      • fs.rename("C:/Users/Scr/Desktop/丽丽.bmp", "C:/Users/Scr/Desktop/lili.bmp", err => {
            if(err) throw err;
            console.log("ok");
        })
    • 删除文件
      • fs.unlink("123.txt", err => {
            if(err) throw err;
            console.log("删除完成");
        })
    • 获取文件相关属性
      • fs.stat("C:/Users/Scr/Desktop/lili.bmp", (err, stats) => {
            console.log(stats);
        })
    •  监视文件
      • fs.watchFile("123.txt", (curr, prev) => {
          console.log(curr.mtime); console.log(prev.mtime); })

        监视文件一般会有延迟,可以添加第二个参数,将延迟的时间缩短

      • fs.watchFile('123.txt', {persistent: true, interval: 10}, (curr, prev) => {
          //这里是使用的是模板拼接 console.log(`the current mtime is: ${curr.mtime}`); console.log(`the previous mtime was: ${prev.mtime}`); });

    三、文件流操作

    一般拷贝文件的方法,适合拷贝小文件

    "use strict";
    const fs = require("fs");
    //监视的文件
    let currFile = "F:/BleRay.720P.rmvb";
    //目标文件
    let targetFile = "F:/movie";
    //读文件的流
    let rs = fs.createReadStream(currFile);
    //写文件的流
    let ws = fs.createWriteStream(targetFile);
    //已经读取的文件大小
    let currentCount = 0;
    //文件的总大小
    let fileSize = fs.statSync(currFile).size;
    rs.on("data", (chunk) => {
        currentCount += chunk.length;
        //每一次获取到的数据---buffer
        //console.log(chunk);
        ws.write(chunk);
        console.log("进度:" + currentCount/fileSize + "%");
    })

    文件流的方式拷贝

    "use strict";
    //监视的文件
    let currFile = "F:/BleRay.720P.rmvb";
    //目标文件
    let targetFile = "F:/movie";
    const fs = require("fs");
    //读文件的流
    let rs = fs.createReadStream(currFile);
    //写文件的流
    let ws = fs.createWriteStream(targetFile);
    
    //适合复制大文件,不能显示文件进度
    rs.pipe(ws);
  • 相关阅读:
    内网其他服务器节点连接Mysql数据库很慢的解决方案
    MongoDB分片技术原理和高可用集群配置方案
    Hive事务原理和Datax同步事务表问题解决
    Mysql使用存储过程创建测试数据
    Hive的原生部署方式
    ByteArray的操作总结(复制、打印、位运算)
    句柄
    C# 使用指针将不同值类型赋值到字节数组中
    对象、字节流转换
    ASP.NET Core学习日志1
  • 原文地址:https://www.cnblogs.com/AnnieShen/p/6036398.html
Copyright © 2011-2022 走看看