複数のディレクトリで「abc.txt」というファイルを検索しています。これらのディレクトリは、次のようなコンマ区切りの値です。
string paths= 'C:/hello,D:/Hello';
上記のカンマ区切りのディレクトリを使用して「abc.txt」を検索するにはどうすればよいですか?
ありがとう。
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);
}
文字列パス='C:/ hello、D:/ Hello';
string[] words = paths.Split(',');
次に、各文字列トークンからディレクトリ文字を取得する必要があります
foreach(単語の文字列){
string directoryName = word.Split(':/')[0];
string searchString = word.Split(':/')[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ファイルが含まれます
ファイル名を完全に制御できない限り、コンマ区切りのリストを使用することはお勧めしません(複数の場所を検索する必要があるため、そうしないと思います)。
ファイル名には「、」、「;」などの文字を含めることができることに注意してください。これは、リストを分離するための明白な選択です。パイプ文字('|')を使用してリストを作成することをお勧めしますが、それは読み取り可能であり、ファイル名の一部にすることはできません。
ただし、ファイル名を制御できる場合は、他の人がすでに提案しているように、単にsplitを使用できます。
ファイル名またはディレクトリ名にコンマがないと仮定します
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.
}
そのために分割方法を使用できます
string paths= 'C:/hello,D:/Hello';
string[] words = paths.Split(',');
foreach (string word in words)
{
SearchInDirectory(word)
}
フォルダ文字列を分割し、そのディレクトリを検索します
フォルダとファイルを検索するには、こちらを ご覧くださいhttp://msdn.microsoft.com/en-us/library/dd997370.aspx