检查驱动器信息

DriveInfo[] drives = DriveInfo.GetDrives();
foreach(var drive in drives)
{
if (drive.IsReady)
{
Console.WriteLine(new String('*',30));
Console.WriteLine($"Drive name:{drive.Name}");
Console.WriteLine($"Format:{drive.DriveFormat}");
Console.WriteLine($"Root directory:{drive.RootDirectory}");
Console.WriteLine($"Free Space:{drive.TotalFreeSpace/1024d/1024d/1024d }GB");
Console.WriteLine($"Available Space:{drive.AvailableFreeSpace / 1024 / 1024d / 1024d}GB");
Console.WriteLine($"Total size:{drive.TotalSize / 1024d / 1024d/1024d}GB");
}
} Console.ReadLine();



文件监测


public class Program
{
private static FileSystemWatcher s_watcher;
public static void WatchFiles(string path, string filter)
{
s_watcher = new FileSystemWatcher(path, filter) { IncludeSubdirectories = true };
s_watcher.Created += OnFileChanged;
s_watcher.Changed += OnFileChanged;
s_watcher.Deleted += OnFileChanged;
s_watcher.Renamed += OnFileRenamed;
s_watcher.EnableRaisingEvents = true;
Console.WriteLine("Watching File changes ....");
} private static void OnFileRenamed(object sender, RenamedEventArgs e)
{
Console.WriteLine($"file {e.OldName} to {e.Name}");
} private static void OnFileChanged(object sender, FileSystemEventArgs e)
{
Console.WriteLine($"file {e.Name} {e.ChangeType}");
} public static void Main()
{
WatchFiles(@"C:\Users\PC\Desktop\新建文件夹 (2)","*.*");
Console.ReadLine();
}
}

在使用 FileSystemWatcher 监视文件系统时,EnableRaisingEvents 属性是一个非常重要的属性,它控制着文件系统更改事件是否被引发。

EnableRaisingEvents 属性是一个布尔类型的属性,用于指示 FileSystemWatcher 是否应该引发 Created、Changed、Deleted 和 Renamed 事件。如果将该属性设置为 true,则 FileSystemWatcher 将引发这些事件;如果将其设置为 false,则 FileSystemWatcher 将不会引发这些事件。

当创建一个新的 FileSystemWatcher 对象时,默认情况下,EnableRaisingEvents 属性为 false。这意味着,如果我们不显式地将其设置为 true,则 FileSystemWatcher 将不会引发任何事件。在实际使用中,我们通常需要将其设置为 true,以便监视文件系统更改并在相应的事件发生时执行必要的操作。

需要注意的是,启用 EnableRaisingEvents 属性会导致 FileSystemWatcher 对象在后台运行,并持续监视文件系统的更改。因此,如果我们不再需要监视文件系统更改,则应该将其设置为 false,以释放资源并停止监视。此外,在启用 EnableRaisingEvents 属性时,还需要注意保护代码不受多个事件同时触发的影响,这可能导致竞态条件和其他问题。

将EnableRaisingEvents改为false后,发现确实停止了文件系统的监听,对文件的各种操作,并不会触发相应的响应。

创建临时文件

在 C# 中,Path 类提供了许多用于处理路径的实用方法。其中,GetTempPath、GetTempFileName 和 GetRandomFileName 是三个与临时文件和目录有关的方法。

Path.GetTempPath

Path.GetTempPath 方法返回当前系统上的默认临时文件夹的路径。这个路径通常是系统环境变量 %TEMP% 或 %TMP% 所指向的文件夹。在 Windows 操作系统中,临时文件夹通常是 C:\Users\AppData\Local\Temp。

Path.GetTempFileName 方法在默认临时文件夹中创建一个唯一的临时文件,并返回其完全限定路径。该方法将随机生成一个文件名,并在文件名的末尾添加 .tmp 扩展名。如果创建的文件已经存在,该方法将覆盖它并创建一个新的唯一的文件。

Path.GetRandomFileName 方法返回一个随机的文件名,不包括文件路径。文件名是由两个随机生成的 GUID 组成,中间使用一个连字符连接。该方法生成的文件名是唯一的,适用于在文件名中不需要路径的情况。

string tempPath = Path.GetTempPath();
Console.WriteLine(tempPath);
string tempFileName = Path.GetTempFileName();
Console.WriteLine(tempFileName);
string randomFileName = Path.GetRandomFileName();
Console.WriteLine(randomFileName);
Console.ReadLine();



Path.GetRandomFileName() 方法返回的随机文件名只包括文件名部分,不包括路径,因此需要我们自己指定一个路径来存储该文件。通常情况下,我们会将随机文件存储在默认的临时文件夹中,即可以通过 Path.GetTempPath() 方法获取的路径。以下示例展示了如何使用 Path.GetRandomFileName() 和 Path.Combine() 方法创建一个随机文件并将其存储在临时文件夹中

C# 文件系统的更多相关文章

  1. .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”

    FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...

  2. Linux学习之探索文件系统

    Linux,一起学习进步-    ls With it, we can see directory contents and determine a variety of important file ...

  3. Linux之搭建自己的根文件系统

    Hi!大家好,我是CrazyCatJack.又和大家见面了.今天给大家带来的是构建Linux下的根文件系统.希望大家看过之后都能构建出符合自己需求的根文件系统^_^ 1.内容概述 1.构造过程 今天给 ...

  4. 【架构设计】分布式文件系统 FastDFS的原理和安装使用

    本文地址 分享提纲: 1.概述 2. 原理 3. 安装 4. 使用 5. 参考文档 1. 概述 1.1)[常见文件系统] Google了一下,流行的开源分布式文件系统有很多,介绍如下:   -- mo ...

  5. .NET Core的文件系统[1]:读取并监控文件的变化

    ASP.NET Core 具有很多针对文件读取的应用.比如我们倾向于采用JSON文件来定义配置,所以应用就会涉及针对配置文件读取.如果用户发送一个针对物理文件的HTTP请求,应用会根据指定的路径读取目 ...

  6. .NET Core的文件系统[2]:FileProvider是个什么东西?

    在<读取并监控文件的变化>中,我们通过三个简单的实例演示从编程的角度对文件系统做了初步的体验,接下来我们继续从设计的角度来继续认识它.这个抽象的文件系统以目录的形式来组织文件,我们可以利用 ...

  7. .NET Core的文件系统[3]:由PhysicalFileProvider构建的物理文件系统

    ASP.NET Core应用中使用得最多的还是具体的物理文件,比如配置文件.View文件以及网页上的静态文件,物理文件系统的抽象通过PhysicalFileProvider这个FileProvider ...

  8. .NET Core的文件系统[4]:由EmbeddedFileProvider构建的内嵌(资源)文件系统

    一个物理文件可以直接作为资源内嵌到编译生成的程序集中.借助于EmbeddedFileProvider,我们可以统一的编程方式来读取内嵌于某个程序集中的资源文件,不过在这之前我们必须知道如何将一个项目文 ...

  9. Linux文件系统的实现

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! Linux文件管理从用户的层面介绍了Linux管理文件的方式.Linux有一个树状 ...

  10. Node.js:fs文件系统模块

    fs文件系统模块,这是一个非常重要的模块,对文件的操作都基于它.该模块的所有方法都有同步和异步两种方式,下面便介绍一下该模块的使用. 1.检测当前进程对文件的权限 使用fs.access(path[, ...

随机推荐

  1. Redis 大 Key 分析利器:支持 TOP N、批量分析与从节点优先

    背景 Redis 大 key 分析工具主要分为两类: 1. 离线分析 基于 RDB 文件进行解析,常用工具是 redis-rdb-tools(https://github.com/sripathikr ...

  2. .NET周刊【2月第3期 2025-02-16】

    国内文章 我们是如何解决abp身上的几个痛点 https://www.cnblogs.com/jackyfei/p/18709265 张飞洪分享了abp框架在.net社区的使用经验,认为其在模块化.D ...

  3. 补充:基于项目的协同过滤推荐算法(Item-Based Collaborative Filtering Recommendation Algorithms)

    前言 继续上篇博客,继续读论文. 想看上篇论文的同学可以点击这里 相关工作 In this section we briefly present some of the research litera ...

  4. RealityCapture重建试验

    一.使用已有数据集 (一)小型物件(官网) 输入:Camera_Lubitel2_studio "Lubitel Camera" consisting of 72 images 地 ...

  5. DeepSeek+Claude强强联手,使用AI驱动DjangoStarter 3.1框架升级

    前言 上个月底培训了一周就没时间更新博客 上周有一些空闲时间,就继续体验最近很火的AI辅助编程 之前的文章中有说到我配置好了 VSCode + Cline 插件搭配本地部署的 DeepSeek 来实现 ...

  6. gorm stdErr = sql: Scan error on column index 0, name "total": converting NULL to float64 is unsupported

    前言 使用 gorm 查询时,报错:stdErr = sql: Scan error on column index 0, name "total": converting NUL ...

  7. 基于pandas的数据清洗 -- 异常值的清洗

    博客地址:https://www.cnblogs.com/zylyehuo/ 开发环境 anaconda 集成环境:集成好了数据分析和机器学习中所需要的全部环境 安装目录不可以有中文和特殊符号 jup ...

  8. 虚拟机使用ESXi主机物理硬盘的办法

    虚拟机使用ESXi主机物理硬盘的办法 weixin_33928137 于 2018-06-19 15:22:06 发布 868 收藏 1文章标签: 运维版权 VMware Workstation的虚拟 ...

  9. 【Linux】5.9 Shell函数

    Shell 函数 1. 自定义函数 linux shell 可以用户定义函数,然后在shell脚本中可以随便调用. shell中函数的定义格式如下: [ function ] funname [()] ...

  10. Nginx 301永久性转移

    我有个域名www.taadis.com, 想永久性转移到taadis.com. 前言 看到很多网友的做法是把taadis.com & www.taadis.com等多个域名放到一个server ...