- PR -

Directory.GetFilesメソッドを使ったファイル一覧の取得について

1
投稿者投稿内容
とど0029
会議室デビュー日: 2005/04/11
投稿数: 1
投稿日時: 2005-04-11 18:44
初めて書き込みします。.NET初心者です。
ご存知の方がいらっしゃいましたら教えてください。

現在、.NETFramework1.1、VisualStudio2003(C#)で
Windowsアプリの開発をしています。

Directory.GetFiles(String,String)メソッドを使用して
指定したフォルダ内の指定したパターンにマッチする
ファイルの一覧を取得したいのですが、指定したパターン
にマッチしないファイルまで取得できてしまいます。

以下のようなパターンで正しくマッチするファイルのみを
取得する方法があれば教えていただけないでしょうか?

取得したいファイルのパターン(searchPattern)
(※指定フォルダについては、省略)

・"ABC????.txt"と指定した場合
 string[] directories = Directory.GetFiles("検索フォルダ","ABC????.txt")
 「ABC1234.txt」「ABC12345.txt」「ABC1234.txt2」
 すべてが取得できてしまうが、「ABC1234.txt」のみを
 取得したい。

 ただし、これまで調べたところでは、拡張子(.txt)が
 3桁の場合、拡張子が3桁以上のファイルも対象となって
 しまうようなので、「ABC1234.txt」「ABC1234.txt2」
 が取得されてしまうのは、しょうがないと思いますが、
 「ABC12345.txt」は対象外にしたいのです。



kanai
ベテラン
会議室デビュー日: 2004/09/13
投稿数: 98
投稿日時: 2005-04-11 18:59
私も同じ問題で困ったことがあります。

結局、この問題を回避できそうになかったので、
Directory.GetFiles(String,String)をDirectory.GetFiles(String)に書き換え、
パターンは自前で判定するようにしました。
naoya
会議室デビュー日: 2005/04/11
投稿数: 1
投稿日時: 2005-04-11 20:44
当環境で同コードを走らせて見ましたが結果は
(「ABC1234.txt」「ABC1234.txt2」「ABC12345.txt」とファイルがある場合)

・"ABC????.txt"と指定した場合
「ABC1234.txt」のみ取得

・"ABC?????.txt"と指定した場合
すべて取得

となりました。
当方の環境では「?」の数の分だけ正確に取得できているようです。
おっしゃるとおり指定拡張子が「txt」では、
「txt2」でも取得するような動作を行うとヘルプに記載がありますので

コード:

foreach (string strDir in System.IO.Directory.GetFiles("C:\", "ABC????.txt")) {
if (System.IO.Path.GetExtension(strDir) == ".txt") {
Messagebox.Show(strDir);//任意の処理
}
}



とすればいけると思うんですが

[ メッセージ編集済み 編集者: naoya 編集日時 2005-04-11 20:45 ]

[ メッセージ編集済み 編集者: naoya 編集日時 2005-04-11 20:45 ]

[ メッセージ編集済み 編集者: naoya 編集日時 2005-04-11 20:46 ]
カレー落武者
常連さん
会議室デビュー日: 2003/09/12
投稿数: 49
投稿日時: 2005-05-07 21:24
たった今、その問題に当たっていた者です。
仰る通りの方法で出来ました。ありがとうございます。
今日は何てラッキーなんだ・・・。

お礼だけで申し訳ないのですが、どうしてもお礼を言いたかったのです。
本当に助かりました。ありがとうございます。
1

スキルアップ/キャリアアップ(JOB@IT)