我知道这很多;试图从工作中挖出一个洞。
基本上,我需要抓住多个服务器上的多个文件。现在我遇到了两个问题: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();
}
答案 0 :(得分:1)
您提到您只需查找过去3天内制作的文件。不应使用DateTime.Today.AddDays( -3 )
并对日期进行硬编码,而应使用DateTime time = DateTime.Today.AddDays( -3 );
if ( File.GetCreationTime( filePath ) > time ) {
// Add the file
}
在计划运行之日的前三天获取日期。
当然,在您的查找文件方法中,将日期与以下内容进行比较:
"THING WAS SET TO 0 THIS SHOULD ONLY HAPPEN AT FIRST"
答案 1 :(得分:0)
1)您想要创建一个在单个文件夹中查找filespec的基本功能。您已经在上面的代码中编写了这个,您只需将其转换为具有参数UNC path和filespec的函数。让函数采用List< FileInfo>的第三个参数。将找到的文件添加到。
2)如果您需要搜索子文件夹,请创建一个函数,通过调用您在#1中编写的函数搜索UNC路径的子文件夹,然后获取所有文件夹的列表,并为找到的每个文件夹调用自身(以及转,这些调用将调用子子文件夹等。)这称为递归。让此函数获取List并将所有找到的文件添加到List中,方法是将其传递给#1函数。
3)获取要搜索到列表或数组的根UNC路径,然后调用它们,将它们传递给它们,将文件规范和最初空列表传递给#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),你可以使用This method来检查对于另一条路径中的路径。
编辑:如果您找到了要查找的内容并希望提前退出,请让函数返回布尔值,这意味着您可以找到想要提前停止的内容。然后在循环中使用break。我编辑了代码。