我有一个任务是使用C#处理文件夹中的文件,文件的命名约定如下:
0000001.log
0000002.log
....
00nnnnn.log
给定参数x,将处理名称小于x的所有文件。处理完毕后,该文件将被删除。
同时,另一个应用程序将不断向此文件夹添加日志文件,并带有增量编号。
我知道我可以使用GetFiles
或EnumerateFiles
& linq in C#来过滤我需要的文件。
如果我理解正确,这两种方法会首先将所有文件名加载到内存中,然后过滤掉我需要的文件名。
由于nnnn
是一个非常大的数字,我认为如果我有办法只检索我需要的文件名,即x个文件,而不加载所有文件名
这可能吗?
答案 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条件。如果条件为真,则加载该文件。