繁体   English   中英

当其他应用程序正在创建新文件时,从文件夹中检索文件名

[英]Retrieve File Names from a folder while new files are being created by other application

我有一个任务要使用C#处理文件夹中的文件,文件的命名约定如下:

0000001.log
0000002.log
....
00nnnnn.log

给定参数x,将处理名称小于x的所有文件。 处理后,文件将被删除。

同时,另一个应用程序将不断以递增编号将日志文件添加到此文件夹中。

我知道我可以在C#中使用GetFilesEnumerateFiles &linq来过滤所需的文件。

如果我理解正确,这两种方法将首先将所有文件名加载到内存中,然后过滤掉我需要的文件名。

由于nnnn是一个很大的数字,所以我认为如果我能只检索需要的文件名(即x个文件)而不加载所有文件名,则效率会更高

这可能吗?

您可以使用文件系统观察器来接收有关新文件创建的通知:

System.IO.FileSystemWatcher m_Watcher = new System.IO.FileSystemWatcher(); 
m_Watcher.Path = folderPath; 
m_Watcher.Filter = strFilter; 
m_Watcher.NotifyFilter = NotifyFilters.LastAccess | 
                     NotifyFilters.LastWrite | 
                     NotifyFilters.FileName | 
                     NotifyFilters.DirectoryName;

m_Watcher.Changed += new FileSystemEventHandler(OnChanged);
m_Watcher.Created += new FileSystemEventHandler(OnChanged);

而strFilter是文件名的过滤器,例如:“ * .txt”;

有关更多信息, 请访问https://msdn.microsoft.com/zh-cn/library/system.io.filesystemwatcher(v=vs.110).aspx

您可以进行for迭代并在其中添加if条件。如果条件为true,则将其放到该文件中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM