2

我正在多个目录上搜索一个说“abc.txt”的文件。这些目录是逗号分隔的值,如

string paths= 'C:/hello,D:/Hello';

如何使用上述逗号分隔目录搜索“abc.txt”?

谢谢。

4

7 回答 7

3

您只需要在逗号上拆分字符串,然后使用DirectoryInfo该类依次搜索每个目录:

http://msdn.microsoft.com/en-us/library/ms143327.aspx

string paths= 'C:/hello,D:/Hello';
string[] pathList = paths.Split(',');
string searchPattern = "abc.txt";
foreach (string path in pathList)
{
    DirectoryInfo di = new DirectoryInfo(path);
    FileInfo[] files = di.GetFiles(searchPattern, SearchOption.TopDirectoryOnly);
}
于 2012-06-29T06:26:01.033 回答
1
  1. 您需要将字符串与逗号分开:

字符串路径='C:/hello,D:/Hello';

 string[] words = paths.Split(',');
  1. 现在您需要从每个字符串标记中获取目录字母

    foreach(单词中的字符串){

string directoryName = word.Split(':/')[0];

字符串 searchString = word.Split(':/')[1];

}

现在编写搜索逻辑以在目录中搜索。

于 2012-06-29T06:33:39.523 回答
1

根据逗号拆分您的字符串,(我希望您的目录名称中没有任何逗号)

string[] directories = paths.Split(',');
var files = new List<string>();
foreach (string str in directories)
     {
       DirectoryInfo d = new DirectoryInfo(str);
       files.AddRange(Directory.GetFiles(d.FullName, "abc.txt", SearchOption.AllDirectories));
     }

您的文件将包含具有完整路径的目录中的所有 abc.txt 文件

于 2012-06-29T06:35:00.130 回答
1

我不建议使用逗号分隔的列表,除非您对文件名有绝对控制权(我假设您没有,因为您需要搜索多个位置)。

请记住,文件名可以包含诸如“,”和“;”之类的字符 这将是分离列表的明显选择。如果您可以控制创建我建议使用管道字符('|')的列表,它是可读的并且它不能是文件名的一部分。

但是,如果您可以控制文件名,则可以像其他人已经建议的那样简单地使用 split 。

于 2012-06-29T06:36:07.523 回答
0

拆分您的文件夹字符串并搜索该目录

要搜索文件夹和文件,您可能想看看这里 http://msdn.microsoft.com/en-us/library/dd997370.aspx

于 2012-06-29T06:27:56.027 回答
0

假设文件名或目录名中没有逗号

string paths= @"C:/hello,D:/Hello";

string multipaths = paths.Split(',');

foreach (string str in multipaths)
{
    string filepath = Path.Combine(str, "abc.txt");

   //Do what you want from these files.
}
于 2012-06-29T06:25:07.023 回答
0

你可以使用 split 方法

    string paths= 'C:/hello,D:/Hello';
    string[] words = paths.Split(',');
    foreach (string word in words)
    {
        SearchInDirectory(word)
    }
于 2012-06-29T06:25:59.653 回答