当前位置: 首页 > news >正文

C# 文件夹类的实现与文件属性处理

在现代软件开发中,处理文件和文件夹是非常常见的任务。
       C# 提供了丰富的类库来操作这些文件系统的基本元素。本篇文章将探讨如何在 C# 中实现一个简单的文件夹类,以及如何获取文件名、文件路径、大小和创建日期等文件属性。

一、使用 `System.IO` 命名空间
       在C#中,`System.IO`命名空间提供了一系列与文件和文件夹操作相关的类。在我们实现文件夹类之前,先了解一些基本的文件操作类。

- **FileInfo**:用于获取文件的相关信息。
- **DirectoryInfo**:用于获取文件夹的相关信息。
- **File** 和 **Directory**:提供静态方法来创建、删除和移动文件或文件夹。

二、文件夹类的基础结构
首先,我们定义一个简单的 `Folder` 类,包含以下属性:
- 文件名
- 文件路径
- 文件大小
- 创建日期

using System;
using System.IO;

public class Folder
{

    public string Name { get; set; }

    public string Path { get; set; }

    public long Size { get; set; }

    public DateTime CreationDate { get; set; }

    public Folder(string path)

    {

        if (Directory.Exists(path))

        {

            var directoryInfo = new DirectoryInfo(path);

            Name = directoryInfo.Name;

            Path = directoryInfo.FullName;

            Size = GetDirectorySize(directoryInfo);

            CreationDate = directoryInfo.CreationTime;

        }

        else

        {

            throw new DirectoryNotFoundException($"Directory does not exist: {path}");

        }

    }

    private long GetDirectorySize(DirectoryInfo directoryInfo)

    {

        long size = 0;

       // 计算文件夹中的所有文件大小

       FileInfo[] files = directoryInfo.GetFiles();

       foreach (var file in files)

       {

            size += file.Length;

        }

       // 递归计算子文件夹的大小

       DirectoryInfo[] directories = directoryInfo.GetDirectories();

       foreach (var dir in directories)

       {

            size += GetDirectorySize(dir);

       }

       return size;

    }
}

三、属性解析

1. **文件名**: 文件夹的名称可以通过 `DirectoryInfo` 的 `Name` 属性获取。
2. **文件路径**: 文件夹的完整路径可以通过 `DirectoryInfo` 的 `FullName` 属性获取。
3. **文件大小**: 文件夹的大小需要递归计算其中所有文件的大小,使用辅助方法 `GetDirectorySize` 实现。
4. **创建日期**: 使用 `DirectoryInfo` 的 `CreationTime` 属性可以获得文件夹的创建时间。

四、使用代码

接下来,我们可以通过创建 `Folder` 类的实例来获取一个特定文件夹的属性。

class Program
{

    static void Main(string[] args)

    {

        try

        {

            Console.WriteLine("请输入文件夹路径:");

            string inputPath = Console.ReadLine();

            Folder folder = new Folder(inputPath);

            Console.WriteLine($"文件夹名称: {folder.Name}");

            Console.WriteLine($"文件夹路径: {folder.Path}");

            Console.WriteLine($"文件夹大小: {folder.Size} 字节");

            Console.WriteLine($"创建日期: {folder.CreationDate}");

        }

        catch (Exception ex)

        {

            Console.WriteLine("发生错误: " + ex.Message);

        }

    }
}


五、总结与扩展

       以上代码展示了如何在C#中实现一个简单的文件夹类,并获取文件夹的基本属性。我们可以扩展此类,加入更多功能,比如:

- 列出文件夹中的所有文件。
- 过滤特定类型的文件。
- 获取文件夹的最后修改时间和访问时间。

       通过使用`System.IO`命名空间,我们可以轻松地与文件系统交互,构建出丰富的文件管理功能。这为我们日常的文件管理、数据处理和其他与文件相关的应用提供了极大的便利。

       这种方法不仅适用于 Windows 平台,也可在支持 .NET Core 或 .NET 5 及以后的其他平台上使用,具有较好的跨平台能力和适用性。

相关文章:

C# 文件夹类的实现与文件属性处理

在现代软件开发中,处理文件和文件夹是非常常见的任务。 C# 提供了丰富的类库来操作这些文件系统的基本元素。本篇文章将探讨如何在 C# 中实现一个简单的文件夹类,以及如何获取文件名、文件路径、大小和创建日期等文件属性。 一、使用 System.IO 命…...

基于SSM框架和Layui的学院课程安排系统的设计与实现(源码+定制+定制)

博主介绍: ✌我是阿龙,一名专注于Java技术领域的程序员,全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师,我在计算机毕业设计开发方面积累了丰富的经验。同时,我也是掘金、华为云、阿里云、InfoQ等平台…...

【论文笔记】DKTNet: Dual-Key Transformer Network for small object detection

【引用格式】:Xu S, Gu J, Hua Y, et al. Dktnet: dual-key transformer network for small object detection[J]. Neurocomputing, 2023, 525: 29-41. 【网址】:https://cczuyiliu.github.io/pdf/DKTNet%20Dual-Key%20Transformer%20Network%20for%20s…...

设计模式之适配器模式(Adapter)

一、适配器模式介绍 适配器模式(adapter pattern )的原始定义是:将类的接口转换为客户期望的另一个接口, 适配器可以让不兼容的两个类一起协同工作。 适配器模式是用来做适配,它将不兼容的接口转换为可兼容的接口,让原本由于接口…...

[git] github管理项目之环境依赖管理

导出依赖到 requirements.txt pip install pipreqs pipreqs . --encodingutf8 --force但是直接使用pip安装不了torch,需要添加源!! pip install -r requirements.txt -f https://download.pytorch.org/whl/torch_stable.html想到一个麻烦的…...

【STM32 Blue Pill编程实例】-SD卡文件读写(SPI接口)

SD卡文件读写(SPI接口) 文章目录 SD卡文件读写(SPI接口)1、SD卡模块介绍2、硬件准备与接线3、模块配置3.1 SPI接口配置3.2 SPI接口的片选信号引脚配置3.3 FATFS配置4、代码实现在本文中,我们将介绍如何将 microSD 卡与 STM32 Blue Pill 连接,并在STM32CubeIDE中对SD卡进行…...

为什么需要软件测试?

软件测试 软件测试是评估和验证计算机程序或系统是否按预期运行的过程。 它涉及执行程序或系统以识别预期结果和实际结果之间的任何错误或差距。 目标是确保软件满足指定的要求,没有缺陷,并在不同场景中可靠地工作。 为什么需要软件测试?…...

成为超人:普通人如何白手起家,富一代和富二代的根本区别是什么?

成为超人:普通人如何白手起家,富一代和富二代的根本区别是什么? 我的问题是事业就讲 10 年装逼学习法失效① 光说不练,还是太懒真正的勤奋,解决温饱后,只专注赚钱这件事 ② 信念飘摇,随波流转万…...

Java 集合 Collection常考面试题

理解集合体系图 collection中 list 是有序的,set 是无序的 什么是迭代器 主要遍历 Collection 集合中的元素,所有实现了 Collection 的集合类都有一个iterator()方法,可以返回一个 iterator 的迭代器。 ArrayList 和 Vector 的区别? ArrayList 可以存放 null,底层是由数…...

C++继承与菱形继承(一文了解全部继承相关基础知识和面试点!)

目的减少重复代码冗余 Class 子类(派生类) : 继承方式 父类(基类) 继承方式共有三种:公共、保护、私有 父类的私有成员private无论哪种继承方式都不可以被子类使用 保护protected权限的内容在类内是可以访问,但是在…...

谷歌DeepMind 德米斯·哈萨比斯 因蛋白质预测AI荣获诺贝尔化学奖

2024年诺贝尔化学奖的一半授予了谷歌DeepMind的联合创始人兼首席执行官德米斯哈萨比斯和公司总监约翰M朱姆珀,以表彰他们在利用人工智能预测蛋白质结构方面的研究成果。另一半奖项则授予华盛顿大学生物化学教授大卫贝克,以表彰他在计算蛋白质设计领域的贡…...

内网笔记大全

内网笔记大全 1、基础命令 Windows 1、net user #查看用户 2、net view #查看在线主机 3、systeminfo #查看操作系统的基本配置 4、ipconfig /all #详细显示当前网络配置信息和网卡信息 5、net localgroup #查看本地组信息 6、net localgroup administrators #查看管理员组 7、…...

peft.LoraConfig()参数说明

LoraConfig()介绍 LoraConfig()是peft库中的一个配置类,用于设置大模型微调方法LoRA(Low-Rank Adaptation)的相关参数。PEFT 库为各种参数高效的微调方法(如 LoRA)提供了封装,以减少微调大模型时的计算资源…...

串口(UART)的FPGA设计(接收与发送模块)

目录 串口基础知识 一、什么是串口?有哪些特点? 二、常见的串口通信协议有哪些?他们有什么区别?...

JSON 格式化工具:快速便捷地格式化和查看 JSON 数据

JSON 格式化工具:快速便捷地格式化和查看 JSON 数据 为什么需要 JSON 格式化工具? 在日常开发和调试中,JSON 是非常常见的数据交换格式。无论是前端与后端的接口调用,还是数据存储和处理,JSON 格式都扮演着重要角色。…...

【星汇极客】STM32 HAL库各种模块开发之1.8TFT屏幕

前言 本人是一名嵌入式学习者,在大学期间也参加了不少的竞赛并获奖,包括:江苏省电子设计竞赛省一、睿抗机器人国二、中国高校智能机器人国二、嵌入式设计竞赛国三、光电设计竞赛国三、节能减排竞赛国三等。 暑假的时候参加了太多的比赛&#…...

Excel中使用SQL语句的四种方法

总结在 Excel 中使用 SQL 语句的四种方法,各种方法都有各自的适用场景,可以选择自己熟悉的或喜欢方式。本文以在 Excel 中操作 MS SQL 数据库的数据为例进行说明。MS SQL 的数据如下,使用微软 SQLExpress 版本。 方法 1: Excel 现…...

目标检测中的损失函数

损失函数是用来衡量模型与数据的匹配程度的,也是模型权重更新的基础。计算损失产生模型权重的梯度,随后通过反向传播算法,模型权重得以更新进而更好地适应数据。一般情况下,目标损失函数包含两部分损失,一个是目标框分…...

list库实现

list库实现的要点&#xff1a; 构建list类时&#xff0c;需要同时构建struct Node来存储节点信息&#xff0c;list类中只存储哨兵位节点信息&#xff0c;迭代器类需要template<T,Ptr,Ref>来构建const和非const迭代器&#xff0c;迭代器中也是存储节点信息。反向迭代器也…...

MFC工控项目实例二十三模拟量输入设置界面

承接专栏《MFC工控项目实例二十二主界面计数背景颜色改变》 1、在SenSet.h文件中添加代码 #include "BtnST.h" #include "ShadeButtonST.h"/ // SenSet dialogclass SenSet : public CDialog { // Construction public:SenSet(CWnd* pParent NULL); //…...

Translumo:5分钟掌握Windows实时屏幕翻译终极指南

Translumo&#xff1a;5分钟掌握Windows实时屏幕翻译终极指南 【免费下载链接】Translumo Advanced real-time screen translator for games, hardcoded subtitles in videos, static text and etc. 项目地址: https://gitcode.com/gh_mirrors/tr/Translumo 你是否在玩外…...

用PyTorch和ECANet18搞定RAF-DB表情分类:从数据集下载到模型部署的保姆级教程

基于ECANet18的RAF-DB表情识别实战&#xff1a;从零构建高精度分类模型 人脸表情识别&#xff08;FER&#xff09;作为计算机视觉领域的重要分支&#xff0c;在情感计算、智能交互等领域展现出巨大潜力。本文将带您完整实现一个基于PyTorch和ECANet18的端到端表情识别系统&…...

避坑指南:Unity游戏在Linux上运行报错?OpenCV依赖和文件权限问题排查实录

Unity游戏Linux部署避坑指南&#xff1a;从权限修复到OpenCV依赖全解析 当你在Ubuntu上双击那个刚导出的Unity游戏.x86_64文件时&#xff0c;屏幕却弹出一行冰冷的错误信息——这种从云端跌入谷底的体验&#xff0c;每个跨平台开发者都经历过。不同于Windows的一键运行&#xf…...

数据中心碳减排:工作负载迁移与服务器调度优化

1. 数据中心碳减排技术概述 在数字经济时代&#xff0c;数据中心作为信息基础设施的核心载体&#xff0c;其能源消耗和碳排放问题日益凸显。据统计&#xff0c;全球数据中心电力消耗已占全球总用电量的1-2%&#xff0c;且随着AI、云计算等技术的快速发展&#xff0c;这一比例仍…...

ARM Jazelle技术:硬件加速Java字节码执行详解

1. ARM Jazelle技术概述Jazelle技术是ARM架构中用于硬件加速Java字节码执行的关键扩展&#xff0c;最早出现在ARMv5TE架构中。这项技术通过在处理器内部集成Java字节码执行单元&#xff0c;实现了Java虚拟机(JVM)功能的硬件化。与传统的软件解释器相比&#xff0c;Jazelle能够将…...

基于Adafruit Audio FX的智能穿戴音频系统设计与实现

1. 项目概述&#xff1a;一件会“捧场”的智能夹克你有没有想过&#xff0c;你的衣服可以成为你专属的喜剧演员、气氛组或者随身音效库&#xff1f;想象一下&#xff0c;在朋友聚会时&#xff0c;一个恰到好处的罐头笑声从你的口袋响起&#xff1b;或者在你做出一个帅气动作时&…...

大疆M4系列+YOLOV8识别算法 如何训练无人机罂粟识别检测数据集 让非法种植无处可藏:无人机+AI罂粟识别数据集发布,覆盖花期_果期多阶段检测 无人机俯拍+AI识别罂粟

无人机俯拍AI识别罂粟&#xff0c;准确率超95%&#xff01;&#xff0c;助力禁毒攻坚》​ 《科技禁毒再升级&#xff01;YOLO实测mAP 83.9%》​ 《让非法种植无处可藏&#xff1a;无人机AI罂粟识别数据集发布&#xff0c;覆盖花期/果期多阶段检测 智慧巡检 {专业级AI巡查无人机…...

基于RP2040与Santroller固件,复活旧吉他控制器玩转现代音游

1. 项目概述&#xff1a;让尘封的“神器”重获新生如果你和我一样&#xff0c;是个从《吉他英雄》、《摇滚乐队》时代走过来的老玩家&#xff0c;家里大概率还躺着一两把当年斥“巨资”购入的专用吉他控制器。它们手感扎实&#xff0c;造型酷炫&#xff0c;但最大的悲哀莫过于&…...

SAP F110自动付款:从零到精通的配置全景图

1. SAP F110自动付款入门指南 第一次接触SAP F110自动付款功能时&#xff0c;我也被那一堆配置项搞得晕头转向。记得当时为了搞清楚银行确定逻辑&#xff0c;整整花了两天时间反复测试。现在回想起来&#xff0c;如果有个系统性的指导手册&#xff0c;至少能节省一半时间。F110…...

初创团队如何利用Token Plan套餐有效控制AI开发成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创团队如何利用Token Plan套餐有效控制AI开发成本 对于资源有限的初创团队和独立开发者而言&#xff0c;在原型开发和产品验证阶…...