在其他应用程序

时间:2016-06-20 06:39:28

标签: c# .net linq filesystems

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

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

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

同时,另一个应用程序将不断向此文件夹添加日志文件,并带有增量编号。

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

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

由于nnnn是一个非常大的数字,我认为如果我有办法只检索我需要的文件名,即x个文件,而不加载所有文件名

这可能吗?

2 个答案:

答案 0 :(得分:0)

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

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&#34 ;;

了解更多信息https://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher(v=vs.110).aspx

答案 1 :(得分:0)

你可以进行迭代并在其中添加if条件。如果条件为真,则加载该文件。