• 基于 Node.js 的文件管理系统(附源码)


    fs 模块简介

    Node.js 提供一组可用于与文件系统进行交互(以类似于标准 POSIX 函数的方式)的模块 fs 。 使用方式:

    const fs = require('fs');
    
    
    • 1
    • 2

    所有的文件系统操作都具有同步的、回调的、以及基于 promise 的形式。

    示例

    同步

    同步的形式会阻塞 Node.js 事件循环和进一步的 JavaScript 执行,直到操作完成。 异常会被立即地抛出,可以使用 try…catch 处理,也可以冒泡。

    const fs = require('fs');
    
    try {
       
      fs.unlinkSync('文件');
      console.log('已成功删除文件');
    } catch (err) {
       
      // 处理错误
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    回调

    异步的形式总是把完成回调作为其最后一个参数。 传给完成回调的参数取决于具体方法,但第一个参数总是预留给异常。 如果操作被成功地完成,则第一个参数会为 null 或 undefined。(插播一条广告:需要开通正版WebStorm的可以联系我,56元一年,正版授权激活,官网可查有效期,有需要的加我微信:poxiaozhiai6,备注:914。)

    const fs = require('fs');
    
    fs.unlink('文件', (err) => {
       
      if (err) throw err;
      console.log('已成功删除文件');
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    Promise

    基于 promise 的操作会返回 Promise(当异步操作完成时被解决)。

    const fs = require('fs');
    
    (async function(path) {
       
      try {
       
        await fs.unlink(path);
        console.log(`已成功删除 ${
         path}`);
      } catch (error) {
       
        console.error('出错:', error.message);
      }
    })('文件');
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    文件管理系统

    在这里插入图片描述

    该示例是基于 nodejs 的一套UI可视化文件管理系统,提供一些常用文件(夹)操作,包含文件(夹) 读取、创建、拷贝、移动、删除、重命名

    文件操作

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bmM9fpOi-1663156319303)(./doc/actions.png)]

    读取文件

    可读取到文件大小、名称、类型、创建时间、修改时间等。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jIv7Zbsq-1663156319304)(./doc/details.png)]

    const readfile = async (dir, filename) => {
       
      const fullname = fixpath(`${
         dir}/${
         filename}`);
      if (!fs.existsSync(fullname)) {
       
        throw Error(`[${
         fullname}] 文件或文件夹不存在!`);
      }
      const stats = await fs.statSync(fullname);
      if (stats.isFile()) {
       
        return {
       
          dir,
          filename,
          type: filename.split('.').slice(-1)[0],
          size: stats.size,
          mtime: stats.mtime,
          birthtime: stats.birthtime,
        };
      } else if (stats.isDirectory()) {
       
        return {
       
          dir,
          filename,
          type: 'dir',
          size: stats.size,
          mtime: stats.ctime
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
  • 相关阅读:
    B. Reverse Binary Strings
    .NET性能优化-快速遍历List集合
    声明和定义
    opencv-python之图像的加法与按位运算
    深度强化学习+金融投资的应用入门
    【苍穹外卖 | 项目日记】第四天
    Thinkphp workerman gatewayWorker 不能在windows 下启动的解决办法
    私域电商:实体商家想通过异业联盟引流,应该怎么做?
    645. 错误的集合(javascript)645. Set Mismatch
    Ubuntu+10.04安装Bochs+2.4.5笔记
  • 原文地址:https://blog.csdn.net/qq_38140936/article/details/126859091