2008/09/05(Fri) 12:54:21 編集(投稿者)
■No24626 (ren さん) に返信
foreach でゴリゴリよりは、 Array.Copy() を使うか、 List<string> を使った方がいい気がします。
# Array.Copy()
string[] strHtmlFile = System.IO.Directory.GetFiles(path, "*.html"));
string[] strDocFile = System.IO.Directory.GetFiles(path, "*.doc"));
string[] strFile = new string[strHtmlFile.Length + strDocFile.Length];
System.Array.Copy(strHtmlFile, strFile, strHtmlFile.Length);
System.Array.Copy(strDocFile, 0, strFile, strHtmlFile.Length, strDocFile.Length);
# List<string>
System.Collections.Generic.List<string> s = new System.Collections.Generic.List<string>();
s.AddRange(System.IO.Directory.GetFiles(path, "*.html"));
s.AddRange(System.IO.Directory.GetFiles(path, "*.doc"));
string[] strFile = s.ToArray();
ちなみに、別のアプローチとして、全ファイルを取得して Array.FindAll() で絞るという方法もありかなと思います。
(特に薦める訳ではありませんが。。。)
# 一応、 Array.FindAll() を使う一例
string[] strFile = System.Array.FindAll(System.IO.Directory.GetFiles(path), SearchFile);
static bool SearchFile(string file) {
return System.Text.RegularExpressions.Regex.IsMatch(
file,
"\\.(?:html|doc)$",
System.Text.RegularExpressions.RegexOptions.IgnoreCase);
}
# 追記
みきぬさんと微妙に内容かぶりました。。。