检查新文件夹是否存在的 C# 控制台应用

本文关键字:控制台 应用 存在 文件夹 是否 检查 | 更新日期: 2023-09-27 17:56:26

可能的重复项:
如何查看文件系统目录以查看何时将文件添加到其中?

我正在用 c# 创建一个控制台应用程序,它的功能之一是每分钟扫描一次修复文件夹路径(示例 c:''FixedFolderA),并检查是否已创建新文件夹(示例 c:''FixedFolderA''NewFolderB)。

因此,将在 c:''FixedFolderA 下创建几个文件夹。

新文件夹将没有子目录,只有我将复制到其他位置的文件。

我不确定最有效的设计来做到这一点,需要你的帮助。

我在想这个工作流程:

  1. 在程序开始时扫描 c:''FixedFolderA。
  2. 将所有子目录存储在一个列表中。
  3. 创建一个扫描 c:''FixedFolderA 的工作进程,并检查列表中是否存在该子目录。如果目录不存在,请执行一些操作。

我担心的是 c:''FixedFolderA 中子目录的 umber 会随着时间的推移而增加,并且程序每分钟都会遍历所有这些目录。

每分钟检查一次的例程是否应该通过一个过程来完成?

有人可以用最好的设计分享您的想法来让我入门吗?

谢谢。

检查新文件夹是否存在的 C# 控制台应用

如果您打算监视文件夹的更改,请使用 FileSystemWatcher 类。

此外,如果此控制台应用程序自行执行特定任务,也许最好将其转换为 Windows 服务。

在事件发生时收到通知几乎总是比定期查询更好。

对于您描述的上下文,您可以非常轻松地使用 FileSystemWatcher 类来指定您希望收到通知的文件类型以及您希望在哪个目录中监视。我为您整理了以下代码:

FileSystemWatcher fileWatcher = new FileSystemWatcher("C:''Users''ByteBlast''Desktop", "*.*")
{
    EnableRaisingEvents = true, 
    IncludeSubdirectories = true,
    NotifyFilter =  NotifyFilters.DirectoryName
};
fileWatcher.Created += (sender, eventArgs) => Console.WriteLine("{0} Created", eventArgs.FullPath);

在我指定桌面路径的位置,您将指定例如 C:'FixedFolderA .

您可以通过启用 IncludeSubDirectories 属性来确保您收到有关子目录中更改的通知,就像我上面所做的那样。

因为您只对文件夹感兴趣,而不是文件,所以我将 NotifyFilter 属性设置为 NotifyFilters.DirectroyName

将上面的代码放在控制台应用程序的void Main()中,并确保停止关闭控制台,例如在上面的代码下面包含以下语句Process.GetCurrentProcess().WaitForExit();

与其

每分钟扫描一次目录,不如仔细查看文件系统观察器。 这将告诉您何时对目录结构进行了更改 - 因此效率会高得多。 您的程序只需要跟踪所做的更改。