如何通过多个UNC路径搜索部分文件
本文关键字:路径搜索部 文件 UNC 何通过 | 更新日期: 2023-09-27 18:16:47
我知道这太多了;努力把自己从工作的困境中解救出来。
基本上,我需要在多个服务器上获取许多文件。现在我遇到了两个问题:1)我不知道在多个UNC路径中搜索的最佳方法。2)我必须通过部分名称搜索,可能有多个文件匹配,但我只想使用最近三天创建的文件。
这是我到目前为止的代码。我不是在找人来写,但如果有任何逻辑上的指导,我将不胜感激。
uncPath1 = "''server'share'";
string partial = "2002265467";
DateTime date = Convert.ToDateTime("10/5/2015");
DirectoryInfo a = new DirectoryInfo(uncPath1);
FileInfo[] interactionlist = a.GetFiles("*" + partial + "*.*", SearchOption.AllDirectories);
foreach (FileInfo f in interactionlist)
{
string fullname = f.FullName;
Console.WriteLine(fullname);
Console.Read();
}
您提到您只需要查找过去3天内制作的文件。您应该使用DateTime.Today.AddDays( -3 )
来获得程序运行日前三天的日期,而不是使用Convert.ToDateTime
并硬编码日期。
当然,在查找文件方法中,将日期与以下内容进行比较:
DateTime time = DateTime.Today.AddDays( -3 );
if ( File.GetCreationTime( filePath ) > time ) {
// Add the file
}
1)您想要创建一个查找单个文件夹中的文件的基本函数。您已经在上面的代码中写过了,您只需要将其转换为带有参数UNC path和filespec的函数。让函数接受第三个形参List
2)如果你需要搜索子文件夹,创建一个函数,通过调用你在#1中编写的函数来搜索UNC路径的子文件夹,然后获得所有文件夹的列表,并为找到的每个文件夹调用自身(反过来,这些调用将调用子文件夹,等等)。这被称为递归。让这个函数获取一个List并将所有找到的文件添加到List中,方法是将它传递给#1函数。
3)获取你想要搜索的根UNC路径到List或Array中,然后调用foreach,将它们、filespec和初始空List传递给#2函数。
:
bool FindFiles(string uncPath, string fileSpec, List<FileInfo> found);
bool FildFilesSubfolders(string uncPath, string fileSpec, List<FileInfo> found);
string fileSpec = "whatever";
string[] uncPaths = { "abc", "def" }; // etc
List<FileInfo> found = new List<FileInfo>();
foreach (string nextPath in uncPaths)
{
if (FindFilesSubfolders(nextPath, fileSpec, found))
break;
}
foreach (FileInfo f in found)
{
string fullname = f.FullName;
Console.WriteLine(fullname);
Console.Read();
}
最后一个想法:如果你正在搜索子目录,你担心两个UNC路径本质上是重复的(例如,c:'foo和c:'foo'foo2),你可以使用这个方法来检查另一个路径中的路径。
Edit:如果你发现你正在寻找的东西,想要提前退出,让函数返回一个布尔值,意思是你找到了你想要提前停止的东西。然后在循环中使用断点。我已经编辑了代码