检查新文件夹是否存在的 C# 控制台应用
本文关键字:控制台 应用 存在 文件夹 是否 检查 | 更新日期: 2023-09-27 17:56:26
可能的重复项:
如何查看文件系统目录以查看何时将文件添加到其中?
我正在用 c# 创建一个控制台应用程序,它的功能之一是每分钟扫描一次修复文件夹路径(示例 c:''FixedFolderA),并检查是否已创建新文件夹(示例 c:''FixedFolderA''NewFolderB)。
因此,将在 c:''FixedFolderA 下创建几个文件夹。
新文件夹将没有子目录,只有我将复制到其他位置的文件。
我不确定最有效的设计来做到这一点,需要你的帮助。
我在想这个工作流程:
- 在程序开始时扫描 c:''FixedFolderA。
- 将所有子目录存储在一个列表中。
- 创建一个扫描 c:''FixedFolderA 的工作进程,并检查列表中是否存在该子目录。如果目录不存在,请执行一些操作。
我担心的是 c:''FixedFolderA 中子目录的 umber 会随着时间的推移而增加,并且程序每分钟都会遍历所有这些目录。
每分钟检查一次的例程是否应该通过一个过程来完成?
有人可以用最好的设计分享您的想法来让我入门吗?
谢谢。
如果您打算监视文件夹的更改,请使用 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();
。
每分钟扫描一次目录,不如仔细查看文件系统观察器。 这将告诉您何时对目录结构进行了更改 - 因此效率会高得多。 您的程序只需要跟踪所做的更改。